C++笔记


文件重定向|vector初始化|const在函数名后面|struct_class|内联函数与宏定义|vector的capacity

文件重定向

1
test <datain.txt>dataout.txt

使用数组初始化vector

1
2
int a[10];
vector v1(begin(a),begin(a)+10);

使用”范围for”遍历二维数组

1
2
3
4
5
6
7
8

int a[20][20]={0};
for(auto &row:a){
for(auto col:row){
cout<<col<<" ";
}
cout<<endl;
}

const在函数名后面

表示该函数是常成员函数.
要访问常量成员只能用常成员函数.

struct & class

C++ primer::”使用class和struct定义类的唯一区别就是默认的访问权限”;

1
2
3
4
5
6
7
8
9
10
11
12
13
struct node{
int a;
public:
void getA(){return a;}
void setA(int t){a=t;}
};
class node{
int a;
public:
void getA(){return a;}
void setA(int t){a=t;}
};
//第一个的a默认public,第二个的a默认private.

内联函数与宏定义的区别

两者都会将代码在相应位置展开,但是
宏定义会在所有地方将其进行替换,不进行类型检查等操作,只是死板的替换.
内联函数的本质还是函数,会有类型语法的检查,然后在调用的地方进行展开.并且如果函数太复杂,编译器就会将其当成普通函数处理.

vector的capacity

1
2
在使用push_back()不断地往vector中添加数据时,由于vector刚开始分配的内存并没有这么大,所以随着数据不断增多,可能会重新分配空间,然后把源数据拷贝过去.所以如果知道数据的个数,可以先使用reserve()函数分配足够空间.
ps: ivec.reserve(1e9);

欢迎与我分享你的看法。
转载请注明出处:http://taowusheng.cn/