常用C++ STL容器类型及其操作
文章标签
navicatmysqllinux
一、vector
vector是一个集合容器,可以存储各种数据类型的对象,是C++ STL库中最常用的容器类型之一。vector内部实现了一个动态数组,能够自动扩展内存空间。
以下是vector的基本操作:
#include <vector> using namespace std; // 创建一个空的vector vector<int> vec; // 添加元素到vector尾部 vec.push_back(10); // 获取vector中的元素数量 int size = vec.size(); // 获取vector中某个位置的元素 int ele = vec.at(0); // 修改vector中某个位置的元素 vec[0] = 20; // 删除vector尾部的元素 vec.pop_back(); // 在vector中所有元素前插入一个元素 vec.insert(vec.begin(), 30); // 在vector中某个位置插入一个元素 vec.insert(vec.begin() + 1, 40); // 删除vector中某个区间的元素 vec.erase(vec.begin(), vec.begin() + 2); // 清空vector vec.clear();
二、map
map是一种关联容器,存储键值对。可以使用键值进行快速查找,也可以根据键进行排序。map内部使用红黑树存储数据。
以下是map的基本操作:
#include <map> using namespace std; // 创建一个空的map map<string, int> myMap; // 添加键值对到map中 myMap.insert(pair<string, int>("Tom", 18)); myMap.insert(make_pair("Jerry", 20)); // 获取map中某个键的值 int age = myMap["Tom"]; // 判断map中是否存在某个键 if (myMap.find("Jerry") != myMap.end()) { // do something } // 修改map中某个键的值 myMap["Tom"] = 20; // 删除map中某个键值对 myMap.erase("Jerry"); // 获取map中键值对数量 int size = myMap.size(); // 清空map myMap.clear();
三、list
list是双向链表容器,在实现插入和删除等操作时效率较高。list内部的元素可以是任何数据类型。
以下是list的基本操作:
#include <list> using namespace std; // 创建一个空的list list<int> myList; // 在list尾部添加元素 myList.push_back(10); // 在list头部添加元素 myList.push_front(20); // 获取list中某个位置的元素 int ele = myList.front(); // 修改list中某个位置的元素 myList.front() = 30; // 删除list头部的元素 myList.pop_front(); // 删除list尾部的元素 myList.pop_back(); // 在list中某个位置插入一个元素 list<int>::iterator it = myList.begin(); advance(it, 1); myList.insert(it, 40); // 删除list中某个区间的元素 myList.erase(myList.begin(), myList.begin() + 2); // 获取list中元素数量 int size = myList.size(); // 清空list myList.clear();
四、set
set是一种关联容器,存储一组不重复的元素。内部使用红黑树实现,能够自动排序。
以下是set的基本操作:
#include <set> using namespace std; // 创建一个空的set set<int> mySet; // 添加元素到set中 mySet.insert(10); mySet.insert(20); // 查找set中是否存在某个元素 if (mySet.find(10) != mySet.end()) { // do something } // 删除set中某个元素 mySet.erase(20); // 获取set中元素数量 int size = mySet.size(); // 清空set mySet.clear();
五、queue
queue是一个队列容器,按先进先出的原则管理元素。只能在队首移除元素,在队尾添加元素。
以下是queue的基本操作:
#include <queue> using namespace std; // 创建一个空的queue queue<int> myQueue; // 添加元素到queue尾部 myQueue.push(10); // 获取queue头部的元素 int ele = myQueue.front(); // 删除queue头部的元素 myQueue.pop(); // 获取queue中元素数量 int size = myQueue.size(); // 判断queue是否为空 if (myQueue.empty()) { // do something }
六、stack
stack是一个栈容器,按后进先出的原则管理元素。只能在栈顶添加和移除元素。
以下是stack的基本操作:
#include <stack> using namespace std; // 创建一个空的stack stack<int> myStack; // 添加元素到stack顶部 myStack.push(10); // 获取stack顶部的元素 int ele = myStack.top(); // 删除stack顶部的元素 myStack.pop(); // 获取stack中元素数量 int size = myStack.size(); // 判断stack是否为空 if (myStack.empty()) { // do something }
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。