读书笔记
1. 在c++中,有两种声明数组的方法:一种是使用内置的数组;另外一种是使用Vector。 Vector使用起来要容易的多,并且比基元数组更安全,因此应该首选使用Vector。
2. 使用Vector可以解决基元数组中遇到的无法改变数组大小的问题。Vector可是使用resize()函数改变Vector的大小。
三种函数调用方法
(1) 引用调用用于那些可能会被函数改变的对象
eg. int findMax( vector<int> & a );
在被调用函数中改变a的值,原调用函数中的值也会跟着改变
(2) 传值调用适用于那些不应该被函数改变的小型对象
eg. int findMax( vector<int> a );
程序将复制一个新的a用于被调用函数中,这时只是取了a的值,被调用函数中对a的任何修改与原调用函数无关。这种方式有一个很大的缺点,就是要复制一个a到新的内存空间,这一操作代价昂贵。
(3) 常量引用调用适用于那些不应该被函数改变的大型对象。
eg. int findMax( const vector<int> & a );
这种方式的函数调用不需要新分配内存空间却可以使用a的值,比第二种效率要高,当要用第二种传值调用时,建议改用第三种常量引用调用。常量引用调用不会改变原函数中a的值。
3. 在c++中声明vector与其他语言不太一样。
一维数组:
声明为 vector<int> a(3);
使用为 a[0];
二维数组:
声明为 matrix<int> x(2,3);
使用为 x[1][2];
1. 在c++中,有两种声明数组的方法:一种是使用内置的数组;另外一种是使用Vector。 Vector使用起来要容易的多,并且比基元数组更安全,因此应该首选使用Vector。
2. 使用Vector可以解决基元数组中遇到的无法改变数组大小的问题。Vector可是使用resize()函数改变Vector的大小。
三种函数调用方法
(1) 引用调用用于那些可能会被函数改变的对象
eg. int findMax( vector<int> & a );
在被调用函数中改变a的值,原调用函数中的值也会跟着改变
(2) 传值调用适用于那些不应该被函数改变的小型对象
eg. int findMax( vector<int> a );
程序将复制一个新的a用于被调用函数中,这时只是取了a的值,被调用函数中对a的任何修改与原调用函数无关。这种方式有一个很大的缺点,就是要复制一个a到新的内存空间,这一操作代价昂贵。
(3) 常量引用调用适用于那些不应该被函数改变的大型对象。
eg. int findMax( const vector<int> & a );
这种方式的函数调用不需要新分配内存空间却可以使用a的值,比第二种效率要高,当要用第二种传值调用时,建议改用第三种常量引用调用。常量引用调用不会改变原函数中a的值。
3. 在c++中声明vector与其他语言不太一样。
一维数组:
声明为 vector<int> a(3);
使用为 a[0];
二维数组:
声明为 matrix<int> x(2,3);
使用为 x[1][2];