1.定义时赋值
1.1赋默认初始值
(1)数组
在定义时将数组赋值为{},即可初始化数组的所有元素为默认值,整形和浮点型为0,char型为‘\0’,对于任意维度数组都适用。
int a[5] = {};
int b[2][3] = {};
char ca[3] = {};
char cb[3][4] = {};
(2)容器
容器在定义时会默认初始化,不需要额外的赋值
(3)结构体
//结构体定义
struct teststruct
{
int a;
string b;
double c;
char d;
vector<int> e;
};
//初始化
teststruct st={};
1.2赋指定值
(1)数组
int a[4] = { 1, 2, 3, 4 };
int b[2][3] = { {1, 2}, {5, 6, 7} };
int c[2][3][2] = { {{2, 3}, {4, 1}, {12, 32}}, {{6, 7}, {8, 9}, {10, 11}} };
用例中的方法对于char、double、float、long等基础类型数组的初始化都适用.
(2)容器
vector<int> vec = { 1, 2, 3, 4 };
vector<vector<int>> vec2 = { {1, 2}, {5, 6, 7} };
vector<vector<vector<int>>> vec3 = { {{2, 3}, {4, 1}, {12, 32}}, {{6, 7}, {8, 9}, {10, 11}} };
map<int, string> map1 = { {1, "test1"}, {2, "test2"} };
对list也同样适用。
(3)结构体
teststruct st = { 12, "qwer", 1.234, 'd', {1, 2, 3} };
2.定义后赋值
(1)数组
使用memset,对整型和浮点型只能赋值为0或-1,对char类型可以赋值为任意字符
int a[5] ;
memset(a, 0, 5 * sizeof(int));
memset(a, -1, 5 * sizeof(int));
int b[2][3] ;
memset(b, 0, 2 * 3 * sizeof(int));
memset(b, -1, 2 * 3 * sizeof(int));
char ca[3] ;
memset(ca, 'a', 3 * sizeof(int));
memset(ca, 'e', 3 * sizeof(int));
char cb[3][4] ;
memset(cb, 'b', 3 * 4 * sizeof(int));
memset(cb, 'h', 3 * 4 * sizeof(int));
(2)容器
容器可直接使用clear方法清空。
(3)结构体
teststruct st;
memset(st, 0, sizeof(teststruct));