Vector作为STL容器中的一员,使用频率非常高,因此对其基本用法和实用技巧进行记录,便于后期查询使用。
基本用法
#include <iostream> #include <vector> using namespace std; /* empty() 判断vector是否为空 size() 获取vector中元素的个数 clear() 清空vector erase() 删除vector中指定内容的元素 push_back() 尾部插入元素(效率高) pop_back() 尾部删除元素(效率高) insert() 指定位置插入元素(效率低) sort() 排序 reverse 反转 */ int main() { vector<int> arr; arr.push_back(6); arr.push_back(7); arr.push_back(5); arr.push_back(3); arr.push_back(4); arr.pop_back(); // 删除4 sort(arr.begin(), arr.end()); // 排序 reverse(arr.begin(), arr.end()); // 反转 // 7 6 5 3 for(int i = 0; i < arr.size(); i++) { cout << arr[i] << ends; } cout << endl; cout << arr.size() << endl; // 获取元素个数 arr.clear(); // 清空 cout << arr.size() << endl; // 获取元素个数 return 0; }
迭代删除(有坑)
#include <iostream> #include <vector> using namespace std; int main() { vector<int> arr; arr.push_back(6); arr.push_back(7); arr.push_back(8); arr.push_back(8); arr.push_back(9); arr.push_back(10); // erase接口返回的iterator指向下一个原生,此时不需要再次移动 for(vector<int>::iterator it = arr.begin(); it != arr.end(); ) { if(*it == 8) { it = arr.erase(it); // 等效于arr.erase(it); } else { ++it; } } for(int i = 0; i < arr.size(); i++) { cout << arr[i] << ends; } cout << endl; return 0; }
查找(安全)
#include <iostream> #include <vector> using namespace std; int main() { vector<int> arr; arr.push_back(6); arr.push_back(7); arr.push_back(8); arr.push_back(8); arr.push_back(9); arr.push_back(10); vector<int>::iterator it = find(arr.begin(), arr.end(), 8); if(it != arr.end()) { cout << "find" << endl; } else { cout << "Not find" << endl; } return 0; }