【C++】vector容器的用法
检测vector容器是否为空:
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 6 int main() 7 { 8 //检测容器是否为空 9 vector<string>vecA; 10 if (vecA.empty()) 11 { 12 cout << "mapText为空" << endl; 13 } 14 else 15 { 16 cout << "mapText不为空" << endl; 17 } 18 19 //向容器中添加元素 20 vecA.push_back("A"); 21 vecA.push_back("B"); 22 vecA.push_back("C"); 23 24 if (vecA.empty()) 25 { 26 cout << "mapText为空" << endl; 27 } 28 else 29 { 30 cout << "mapText不为空" << endl; 31 } 32 33 cin.get(); 34 return 0; 35 }
访问vector容器中的元素:
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 6 int main() 7 { 8 vector<string>vecA; 9 vecA.push_back("A"); 10 vecA.push_back("B"); 11 vecA.push_back("C"); 12 13 cout << "第1个元素:" << vecA.front() << endl; 14 cout << "最后1个元素:" << vecA.back() << endl; 15 cout << endl; 16 17 cout << "第2个元素:" << *(vecA.begin() + 1) << endl; 18 cout << "倒数第2个元素:" << *(vecA.end() - 1 - 1) << endl; 19 cout << endl; 20 21 cout << "第1个元素:" << *(vecA.begin()) << endl; 22 cout << "最后1个元素:" << *(vecA.end() - 1) << endl; 23 cout << endl; 24 25 for (int i = 0; i < vecA.size(); i++) 26 { 27 cout << "第" << i + 1 << "个元素:" << vecA[i] << endl; 28 } 29 cout << endl; 30 31 //通过迭代器遍历 32 for (vector<string>::iterator pd = vecA.begin(); pd != vecA.end(); pd++) 33 { 34 cout << "第?个元素:" << *pd << endl; 35 } 36 cout << endl; 37 38 cin.get(); 39 return 0; 40 }
合并两个Vector,遍历的方法效率极低,推荐使用insert()函数
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 int main() 6 { 7 vector<string>vecA; 8 vecA.push_back("A1"); 9 vecA.push_back("A2"); 10 11 vector<string>vecB; 12 vecB.push_back("B1"); 13 vecB.push_back("B2"); 14 15 // 方法:insert() 函数 16 vector<string>vecAB; 17 vecAB.insert(vecAB.end(), vecA.begin(), vecA.end()); //将vecA插入 18 vecAB.insert(vecAB.end(), vecB.begin(), vecB.end()); //将vecB插入 19 for (int i = 0; i < vecAB.size(); i++) 20 { 21 cout << "vecAB=" << vecAB[i] << endl; 22 } 23 cin.get(); 24 return 0; 25 26 }
将一个Vector的所有元素复制到另一个中
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 int main() 6 { 7 vector<string>vecA; 8 vecA.push_back("A1"); 9 vecA.push_back("A2"); 10 11 //方法1:声明 12 vector<string> vecB(vecA); 13 for (int i = 0; i < vecB.size(); i++) 14 { 15 cout << "vecB=" << vecB[i] << endl; 16 } 17 cout << endl; 18 19 //方法2:使用函数assign进行赋值 20 vector<string> vecC; 21 vecC.assign(vecA.begin(), vecA.end()); 22 for (int i = 0; i < vecC.size(); i++) 23 { 24 cout << "vecC=" << vecC[i] << endl; 25 } 26 cout << endl; 27 28 // 方法3:insert() 函数 29 vector<string>vecD; 30 vecD.insert(vecD.end(), vecA.begin(), vecA.end()); //将vecA插入 31 for (int i = 0; i < vecD.size(); i++) 32 { 33 cout << "vecD=" << vecD[i] << endl; 34 } 35 cout << endl; 36 37 cin.get(); 38 return 0; 39 }
将两个Vector的元素互换
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 int main() 6 { 7 vector<string>vecA; 8 vecA.push_back("A1"); 9 vecA.push_back("A2"); 10 11 vector<string>vecB; 12 vecB.push_back("B1"); 13 vecB.push_back("B2"); 14 15 for (int i = 0; i < vecA.size(); i++) 16 { 17 cout << "vecA=" << vecA[i] << endl; 18 } 19 for (int i = 0; i < vecB.size(); i++) 20 { 21 cout << "vecB=" << vecB[i] << endl; 22 } 23 cout << endl; 24 25 //方法:使用swap进行交换 26 vecB.swap(vecA);//交换 27 28 for (int i = 0; i < vecA.size(); i++) 29 { 30 cout << "vecA=" << vecA[i] << endl; 31 } 32 for (int i = 0; i < vecB.size(); i++) 33 { 34 cout << "vecB=" << vecB[i] << endl; 35 } 36 37 cin.get(); 38 return 0; 39 }
删除Vector元素
1 #include <iostream> 2 #include <string> 3 #include <vector> 4 using namespace std; 5 int main() 6 { 7 vector<string>vecA; 8 vecA.push_back("A0"); 9 vecA.push_back("A1"); 10 vecA.push_back("A2"); 11 vecA.push_back("A2"); 12 vecA.push_back("A2"); 13 vecA.push_back("A3"); 14 vecA.push_back("A4"); 15 vecA.push_back("A5"); 16 vecA.push_back("A6"); 17 18 for (int i = 0; i < vecA.size(); i++) 19 { 20 cout << "vecA=" << vecA[i] << endl; 21 } 22 cout << endl; 23 24 //删除最后一个元素 25 //vecA.pop_back(); 26 27 //删除最后一个元素 28 //vecA.erase(vecA.end()-1); 29 30 //删除第2个元素 31 //vecA.erase(vecA.begin()+1); 32 33 //删除所有"A2" 34 for (vector<string>::iterator itor = vecA.begin(); itor != vecA.end(); /*++itor*/) 35 { 36 if (*itor == "A2") 37 { 38 itor = vecA.erase(itor); 39 } 40 else 41 { 42 ++itor; 43 } 44 } 45 46 for (int i = 0; i < vecA.size(); i++) 47 { 48 cout << "vecA=" << vecA[i] << endl; 49 } 50 51 cin.get(); 52 return 0; 53 }
使用数组初始化Vector对象
#include<iostream> #include<vector> using namespace std; int main() { const size_t arr_size = 6; int int_arr[arr_size] = { 0,1,2,3,4,5 }; vector<int> intc(int_arr, int_arr + arr_size); for (int i=0;i<intc.size();i++) { cout << i << endl; } cin.get(); return 0; }
效果:
vector相关: