读书笔记 增加中
1.vector 和string
C++标准定义了两个类vector和string,vector和string类将数组和字符串作为基本类来处理,vector有确定的大小,两个string对象可以用==和<等进行比较,两者都可以用=进行复制。
例子:使用vector类存储100个平方值并将基输出
#include <iostream>
#include <vector>
using namespace std;
int main( )
{
vector<int> squares( 100 );
for( int i = 0; i < squares.size( ); i++ )
squares[ i ] = i * i;
for( int i = 0; i < squares.size( ); i++ )
cout << i << " " << squares[ i ] << endl;
return 0;
}
2.指针
动态对象创建
IntCell *m;
m=new IntCell;
能用自动变量 时候就不用new,当通过new分配地址的对象不再引用时, 就需要使用delete操作将其删除。指引的赋值和比较
如果lhs和rhs是指针变量,那么,lhs=rhs使lhs指向rhs所指向的同一个对象。三种传递参数方法
double avg(const vector &arr,int n,bool &errorflag);
arr是vector类型,使用按常量引用调用来传递;
按值调用来传递;
引用地址调用。3.模板
常见函数模板与类模板4.使用矩阵
C++使用矩阵 基本思想是使用向量的向量,需要附加的操作符重载的知识。
代码:一个完整的matrix类
#ifndef MATRIX_H
#define MATRIX_H
#include <vector>
using namespace std;
template <typename Object>
class matrix
{
public:
matrix( int rows, int cols ) : array( rows )
{
for( int i = 0; i < rows; i++ )
array[ i ].resize( cols );
}
const vector<Object> & operator[]( int row ) const//访问函数
{ return array[ row ]; }
vector<Object> & operator[]( int row )//修改函数
{ return array[ row ]; }
int numrows( ) const
{ return array.size( ); }
int numcols( ) const
{ return numrows( ) ? array[ 0 ].size( ) : 0; }
private:
vector< vector<Object> > array;
};
#endif