0
点赞
收藏
分享

微信扫一扫

c++数组

数组与vector比较相似,只是数组大小固定,不能随意增加。

数组定义和初始化,数组元素个数必须是常量表达式

int arr[10]; //代表此数组包含10个int元素
constexpr unsigned sz = 10;
int arr[sz];
int arr2[3] = {0,1,2};

字符数组比较特殊,可以使用字符串字面值进行初始化。

char a1[] = {'a','b','c'};
char a2[] = {'a','b','c','\0'}
char a3[] = "abc";

不能将数组的内容拷贝给其他数据作为初始值和赋值。

int a[] = {1,2};
int a2[] = a; //初始化不行
a2 = a; //赋值不行

数组的元素也能使用for语句或下标运算符进行访问,索引从0开始。使用数组下标的时候通常将其定义为size_t类型。

unsigned scores[11] = {};
for (auto i : scores){
cout << i << endl;
}

定义指向数组的指针,对第一个元素取地址符来获取指向某个对象的指针

string nums[] = {"aa","bb"};
string *p = &nums[0];
string *p2 = nums;

可以使用指针遍历数组元素。

int arr[] = {1,2,3};
int *p = arr;
++p; //指针指向arr[1]

使用指针重写迭代器

int arr[] = {1,2,3};
int *e = &arr[3]; //指向最后元素再往后一个不存在的元素位置
for (int *b = arr;b!=e;++b){
cout << *b << endl;
}

这种方式容易出错,最好使用iterator头文件中的begin和end函数

int a[] = {1,2,3};
int *pbeg = begin(a);
int *pend = end(a);
while(pbeg!=pend)
...
++pbeg;

使用数组初始化vector

int arr = {1,2,3};
vector<int> vec(begin(arr),end(arr));

使用数组的一部分初始化vector

vector<int> subvec(arr,arr+2);

举报

相关推荐

0 条评论