雙端隊列deque比向量vector更有優勢
vector是動態數組,在堆上
vector比array更常用
不需要變長,容量較小,用array
需要變長,容量較大,用vector
1 at()
取出下標
2 c_str()
執行
3 clear()
清空
4 erase()
根據迭代器的位置,刪除元素
erase(myvector.begin() + 3)
5 fill
填充
6 find
7 find_if
8 find_if_not
9 insert()
插入元素
insert(myvector.begin() + 3, 998);//在第4個位置插入
10 pop_back()
刪除最后一個元素
11 push_back()
push_back,算法語言里面的一個函數名,如c++中的vector頭文件里面就有這個push_back函數,在vector類中作用為在vector尾部加入一個數據。
12 size()
求數組元素個數
13 sort
排序
14 swap()
交換
1 at()
取出下標
4 erase()
根據迭代器的位置,刪除元素
erase(myvector.begin() + 3)
5 insert()
插入元素
insert(myvector.begin() + 3, 998);//在第4個位置插入
6 pop_back()
刪除最后一個元素
7 push_back()
push_back,算法語言里面的一個函數名,如c++中的vector頭文件里面就有這個push_back函數,在vector類中作用為在vector尾部加入一個數據。
8 size()
求數組元素個數
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void main() 6 { 7 std::vector<int>myvector;//創建一個數組,數組元素是int類型 8 9 myvector.push_back(1);//尾部加入一個數據 10 myvector.push_back(11); 11 myvector.push_back(111); 12 myvector.push_back(1111); 13 myvector.push_back(2); 14 15 myvector.pop_back();//刪除尾部元素 16 17 for (int i = 0; i < myvector.size(); i++)//遍歷 18 { 19 //std::cout << myvector[i] << std::endl;//上下一樣 20 std::cout << myvector.at(i) << std::endl;//上下一樣,at()可以取出下標 21 } 22 std::cout << std::endl; 23 24 //根據迭代器的位置刪除 25 myvector.erase(myvector.begin() + 3);//刪除第四個元素。刪除第3個元素(從0開始計算的話) 26 27 for (int i = 0; i < myvector.size(); i++)//遍歷 28 { 29 if (1) 30 { 31 //可以增加查詢,修改功能 32 } 33 std::cout << myvector[i] << std::endl; 34 } 35 std::cout << std::endl; 36 37 myvector.insert(myvector.begin() + 2, 998);//在第三個位置前插入,新數據變成第三。在第2個位置前插入,新數據變成第2(從0開始計算的話) 38 39 for (int i = 0; i < myvector.size(); i++)//遍歷 40 { 41 std::cout << myvector[i] << std::endl; 42 } 43 std::cout << std::endl; 44 45 system("pause"); 46 }
2 c_str()
執行
3 clear()
清空
6 pop_back()
刪除最后一個元素
7 push_back()
push_back,算法語言里面的一個函數名,如c++中的vector頭文件里面就有這個push_back函數,在vector類中作用為在vector尾部加入一個數據。
8 size()
求數組元素個數
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void main() 6 { 7 std::vector<std::string>string1;//定義一個字符串數組 8 9 string1.clear();//clear清空 10 11 string1.push_back("notepad");//push_back尾部加入 12 string1.push_back("calc"); 13 string1.push_back("mspaint"); 14 string1.pop_back();//pop_back刪除尾部元素 15 16 for (int i = 0; i < string1.size(); i++)//size()長度 17 { 18 system(string1[i].c_str());//c_str執行,刪除了最后一個,因此將會執行兩個 19 } 20 21 system("pause"); 22 }
//正向迭代器iterator,begin()返回一個迭代器,它指向容器c的第一個元素,end()返回一個迭代器,它指向容器c的最后一個元素的下一個位置
//反向迭代器reverse_iterator,rbegin()返回一個逆序迭代器,它指向容器c的最后一個元素,rend()返回一個逆序迭代器,它指向容器c的第一個元素前面的位置
反向迭代器是一種反向遍歷容器的迭代器。也就是,從最后一個元素到第一個元素遍歷容器。反向迭代器將自增(和自減)的含義反過來了:對於反向迭代 器,++ 運算將訪問前一個元素,而 -- 運算則訪問下一個元素。
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void main() 6 { 7 std::vector<std::string>string1;//創建一個字符串數組 8 9 string1.clear();//清空 10 11 string1.push_back("notepad");//尾部加入 12 string1.push_back("calc"); 13 string1.push_back("mspaint"); 14 15 //正向迭代器iterator,begin()返回一個迭代器,它指向容器c的第一個元素,end()返回一個迭代器,它指向容器c的最后一個元素的下一個位置 16 std::vector<std::string>::iterator ibegin, iend;//創建兩個迭代器指針 17 ibegin = string1.begin();//初始化迭代器指針,數據起始點 18 iend = string1.end();//初始化迭代器指針,結束 19 20 for (; ibegin != iend; ibegin++)//從頭到尾 21 { 22 std::string tempstr = *ibegin;//創建中間臨時變量,獲取指針指向的數據 23 system(tempstr.c_str());//執行 24 } 25 26 //反向迭代器reverse_iterator,rbegin()返回一個逆序迭代器,它指向容器c的最后一個元素,rend()返回一個逆序迭代器,它指向容器c的第一個元素前面的位置 27 std::vector<std::string>::reverse_iterator rbegin = string1.rbegin();//創建迭代器指針,數據起始點 28 std::vector<std::string>::reverse_iterator rend = string1.rend();//創建迭代器指針,結束 29 30 while (rbegin != rend)//從尾到頭 31 { 32 std::string tempstr = *rbegin;//獲取指針指向的數據 33 system(tempstr.c_str());//執行 34 rbegin++;//指針移動 35 } 36 37 system("pause"); 38 }
7 push_back()
push_back,算法語言里面的一個函數名,如c++中的vector頭文件里面就有這個push_back函數,在vector類中作用為在vector尾部加入一個數據。
8 size()
求數組元素個數
//創建一個數組變量,元素是數組
vector可用於管理不規則的樹狀結構
國家-省-市縣
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 5 void main() 6 { 7 std::vector<int>myvector1;//創建一個數組變量,元素是int類型 8 myvector1.push_back(12); 9 myvector1.push_back(13); 10 myvector1.push_back(14); 11 12 std::vector<int>myvector2;//創建一個數組變量,元素是int類型 13 myvector2.push_back(22); 14 15 std::vector<int>myvector3;//創建一個數組變量,元素是int類型 16 myvector3.push_back(32); 17 myvector3.push_back(37); 18 19 std::vector<std::vector<int>>allvector;//創建一個數組變量,元素是數組 20 allvector.push_back(myvector1); 21 allvector.push_back(myvector2); 22 allvector.push_back(myvector3); 23 24 for (int i = 0; i < allvector.size(); i++)//遍歷 25 { 26 for (int j = 0; j < allvector[i].size(); j++) 27 { 28 std::cout << " " << allvector[i][j]; 29 } 30 std::cout << std::endl; 31 } 32 33 system("pause"); 34 }
fill
1 #include <iostream>
2 #include <algorithm>
3 #include <vector>
4
5 template <class T>
6 class show
7 { 8 public: 9 void operator()(T &t) 10 { 11 std::cout << t << " "; 12 } 13 }; 14 15 void main() 16 { 17 std::vector<int>myv; 18 19 myv.push_back(7); 20 myv.push_back(8); 21 myv.push_back(9); 22 myv.push_back(4); 23 myv.push_back(5); 24 myv.push_back(6); 25 26 fill(myv.begin() + 2, myv.end(), 10);//從下標2開始到尾部,用10填充 27 28 for_each(myv.begin(), myv.end(), show<int>()); 29 }
find
1 #include <iostream> 2 #include <vector> 3 4 void main() 5 { 6 std::vector<int>myv; 7 8 myv.push_back(1); 9 myv.push_back(2); 10 myv.push_back(3); 11 12 auto i = find(myv.begin(), myv.end(), 22); 13 14 if (i == myv.end()) 15 { 16 std::cout << "not found" << std::endl; 17 } 18 else 19 { 20 std::cout << *i << std::endl; 21 } 22 }
sort
全部元素排序
1 #include <iostream> 2 #include <algorithm> 3 #include <vector> 4 5 template <class T> 6 class show 7 { 8 public: 9 void operator()(T &t) 10 { 11 std::cout << t << " "; 12 } 13 }; 14 15 void main() 16 { 17 std::vector<int>myv; 18 19 myv.push_back(7); 20 myv.push_back(8); 21 myv.push_back(9); 22 myv.push_back(4); 23 myv.push_back(5); 24 myv.push_back(6); 25 26 sort(myv.begin(), myv.end());//排序 27 28 for_each(myv.begin(), myv.end(), show<int>()); 29 }
sort
部分元素排序
1 #include <iostream> 2 #include <algorithm> 3 #include <vector> 4 5 template <class T> 6 struct show 7 { 8 public: 9 void operator()(T &t) 10 { 11 std::cout << t << " "; 12 } 13 }; 14 15 void main() 16 { 17 std::vector<char>myv; 18 19 myv.push_back('B'); 20 myv.push_back('A'); 21 myv.push_back('C'); 22 myv.push_back('Y'); 23 myv.push_back('Z'); 24 myv.push_back('X'); 25 26 for_each(myv.begin(), myv.end(), show<char>()); 27 std::cout << std::endl; 28 29 sort(myv.begin(), myv.begin() + 3); 30 31 for_each(myv.begin(), myv.end(), show<char>()); 32 std::cout << std::endl; 33 }