1.
变量初始化的顺序要和定义的顺序一致,否则警告
struct Edge;
struct Node {
int dist;
Edge *last;
Node () : last(last), dist(0x7fffffff) {}
} node[MAXN];
8 8 [Warning] 'Node::last' will be initialized after [-Wreorder]
7 6 [Warning] 'int Node::dist' [-Wreorder]
9 2 [Warning] when initialized here [-Wreorder]
9 2 [Warning] 'Node::last' is initialized with itself [-Winit-self]
2、结构体初始化
#include <cstdio>
struct Node {
int a, b;
int arry[5];
Node () { // 结构体初始化
a = 4;
b = 0;
for (int i = 1; i < 5; i++) arry[i] = 0;
}
} node[6];
int main() {
Node a;
printf("%d\n", a.a);
return 0;
}
运行结果:
注意:如果想用 {} 初始化结构体的话,结构体中不能定义构造函数。
2、vector 初始化
转自:http://hi.baidu.com/studyarea/blog/item/57d1cb6e9570b6d881cb4adf.html
二维vector
动态创建m*n的二维vector
方法一:
vector<vector <int> > ivec; ivec.resize(m); for(int i=0;i<m;i++) ivec[i].resize(n);
方法二:
vector<vector <int> > ivec; ivec.resize(m,vector<int>(n));
动态创建二维数组a[m][n]
C语言版:
#include<malloc.h> int **a=(int **)malloc(m*sizeof(int *)); for(int i=0;i<m;i++) a[i]=(int *)malloc(n*sizeof(int));
C++版:
int **a=new int*[m]; for(int i=0;i<m;i++) a[i]=new int[n];
初始化二维数组
vector<vector <int> > ivec(m ,vector<int>(n,0)); //m*n的二维vector,所有元素为0));