Code前端首页关于Code前端联系我们

常用C++ STL容器类型及其操作

terry 2年前 (2023-10-01) 阅读数 105 #c++
文章标签 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前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门