參考資料:
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