参考资料:
cppreference.com
本文代码:
本文源码
array和vector的区别是array是和C++中的数组类似,不能动态改变数组大小,所以会比vector少很多函数。
目录
- 隐式定义的成员函数
- 1.operator= (将另一个容器拷贝过来)
- 元素访问
- 2.at (访问指定元素,进行下标检查)
- 3.operator[] (访问指定元素,可能出现访问越界)
- 4.front (访问第一个元素)
- 5.back (访问最后一个元素)
- 6.data (返回数组第一个元素的地址指针)
- 迭代器
- 7.begin/cbegin (返回指向容器第一个元素的迭代器 /常量迭代器)
- 8.end/cend(返回指向容器尾端的迭代器/常量迭代器)
- 9.rbegin/rcbegin(返回指向容器最后一个元素的迭代器/常量迭代器)
- 10.cend/crend (返回指向容器前端的逆向迭代器/常量迭代器)
- 容量
- 11.empty (判断容器是否为空)
- 12.size (返回容器当前元素个数)
- 13.max_size (返回容器可容纳的最大元素个数)
- 操作
- 14.fill (以指定值填充容器 )
- 15.swap (交换两个容器的内容)
隐式定义的成员函数
1.operator= (将另一个容器拷贝过来)
array<int,3> vec;
array<int,3> tempVec;
//vec:1 2 3
//tempVec:4 5 6
vec = tempVec;
//vec:4 5 6
//tempVec:4 5 6
元素访问
2.at (访问指定元素,进行下标检查)
arr.at(site);
3.operator[] (访问指定元素,可能出现访问越界)
arr[site];
4.front (访问第一个元素)
//arr:1 2 3 4 5
arr.front();
// 1
5.back (访问最后一个元素)
//arr:1 2 3 4 5
arr.back();
// 5
6.data (返回数组第一个元素的地址指针)
//返回第一个元素的地址
arr.data() ;
//返回第一个元素的值
*arr.data();
迭代器
7.begin/cbegin (返回指向容器第一个元素的迭代器 /常量迭代器)
//打印第二个元素
auto ite = tempArr.begin();
std::cout << *++ite << std::endl;//打印第一个元素
auto cIte = tempArr.cbegin();
std::cout << *cIte << std::endl;
8.end/cend(返回指向容器尾端的迭代器/常量迭代器)
//打印倒数第一个元素
auto ite = tempArr.end();
std::cout << *--ite << std::endl;//顺序打印tempArr
for (auto cIte = tempArr.begin(); cIte != tempArr.cend(); ++cIte) {std::cout << *cIte << " ";
}
9.rbegin/rcbegin(返回指向容器最后一个元素的迭代器/常量迭代器)
//打印倒数第二个元素
auto ite = tempArr.rbegin();
std::cout << *++ite << std::endl;//打印最后一个元素
auto cIte = tempArr.crbegin();
std::cout << *cIte << std::endl;
10.cend/crend (返回指向容器前端的逆向迭代器/常量迭代器)
//打印第一个元素
auto ite = tempArr.rend();
std::cout << *--ite << std::endl;//逆序打印tempArr
for (auto cIte = tempArr.rbegin(); cIte != tempArr.crend(); ++cIte) {std::cout << *cIte << " ";
}
容量
11.empty (判断容器是否为空)
bool empty()
if (arr.empty()) {std::cout << "arr为空!\n";}else {std::cout << "arr不为空!\n";}
12.size (返回容器当前元素个数)
arr.size();
13.max_size (返回容器可容纳的最大元素个数)
因为array是固定大小的,所以max_size和size的一样的
arr.max_size();
操作
14.fill (以指定值填充容器 )
//tempArr:1 2 3 4 5
tempArr.fill(8);
//tempArr: 8 8 8 8 8
15.swap (交换两个容器的内容)
//交换前:
//vec:1 3 5 7
//tempVec:2 4 6 8
vec.swap(tempVec);
//交换后:
//vec:2 4 6 8
//tempVec: 1 3 5 7