C++常用容器操作

STL标准模板库

1、vector

vector<int> res;
res.front(); // res的首元素
res.back(); // res的尾元素
for (int i = 0; i < n; i++) {
    if (res.at(i) == 1) { // 寻找res中元素等于1的下标
    }
}

调用std::remove,想要删除元素,必须配合erase成员函数才行,将std::remove返回的迭代器至end全部删除,以下是删除一个val值

vector<int> nums;
nums.erase(std::remove(nums.begin(), nums.end(), val), nums.end());
#include <vector>  
#include <algorithm>  
int main() {  
    std::vector<int> v = {1, 2, 3, 2, 4, 2, 5, 6};  
    int val = 2; // 要删除的值  
    // 使用 remove_if 和 lambda 表达式来将所有等于 val 的元素移动到容器末尾  
    v.erase(std::remove_if(v.begin(), v.end(), [val](int i) { return i == val; }), v.end());  
    // 此时 v 中所有等于 val 的元素都被删除了  
    // 输出结果以验证  
    for (int i : v) {  
        std::cout << i << ' ';  
    }  
    std::cout << '\n';  
    return 0;  
}

2、stack

栈是一种后进先出(Last in First out,LIFO)的数据类型,每次元素入栈时只能添加到栈顶,出栈时只能从栈顶元素出栈。C++中,使用栈需要包含头文件,C++中栈的基本操作如下:

push(); // 入栈。在栈顶添加一个元素,无返回值;
pop(); // 出栈。将栈顶元素删除(出队),无返回值;
top(); // 获得栈顶元素。此函数返回值为栈顶元素,常与pop()函数一起,先通过top()获得栈顶元素,然后将其从栈中删除;
size(); // 获得栈大小。此函数返回栈的大小,返回值也是“size_t”类型的数据,“size_t”是“unsigned int”的别名。
empty(); // 判断栈是否为空。此函数返回栈是否为空,返回值是bool类型。栈空:返回true;不空:返回false。

3、queue

队列是一种先进先出(First in First out,FIFO)的数据类型,每次元素的入队都只能添加到队列尾部,出队时从队列头部开始出。C++中,使用队列需要包含头文件,C++中队列的基本操作如下:

push(); // 入队。在队列尾端添加一个元素,无返回值;
pop(); // 出队。将队列头部元素删除(出队),无返回值;
front(); // 获得队列头部元素。此函数返回值为队列的头部元素,常与pop()函数一起,先通过front()获得队列头部元素,然后将其从队列中删除;
size(); // 获得队列大小。此函数返回队列的大小,返回值是“size_t”类型的数据,“size_t”是“unsigned int”的别名。
empty(); // 判断队列是否为空。此函数返回队列是否为空,返回值是bool类型。队列空:返回true;不空:返回false。
back(); // 返回队列尾部元素,就是队列中最后一个进去的元素。

4、set

哈希数据结构,std::set, std::multiset, unordered_set常用操作

set<int> s;
s.begin()					// 返回指向第一个元素的迭代器
s.end()						// 返回指向最后一个元素的迭代器
s.clear()					// 清除所有元素
s.count()					// 返回某个值元素的个数
s.empty()					// 如果集合为空,返回true,否则返回false
s.equal_range()				// 返回集合中与给定值相等的上下限的两个迭代器
s.erase()					// 删除集合中的元素
s.find(k)					// 返回一个指向被查找到元素的迭代器
s.insert()					// 在集合中插入元素
s.lower_bound(k)			// 返回一个迭代器,指向键值大于等于k的第一个元素
s.upper_bound(k)			// 返回一个迭代器,指向键值大于k的第一个元素
s.max_size()				// 返回集合能容纳的元素的最大限值
s.rbegin()					// 返回指向集合中最后一个元素的反向迭代器
s.rend()					// 返回指向集合中第一个元素的反向迭代器
s.size()					// 集合中元素的数目

5、map

C++中map是一种关联式容器,包含“键值”对

map<int, int> m;
m.begin()          // 返回指向map头部的迭代器
m.clear(// 删除所有元素
m.count()          // 返回指定元素出现的次数,因为key值不会重复,所以只能是1 or 0
m.empty()          // 如果map为空则返回true
m.end()            // 返回指向map末尾的迭代器
m.equal_range()    // 返回特殊条目的迭代器对
m.erase()          // 删除一个元素
m.find()           // 查找一个元素,返回的是迭代器
m.get_allocator()  // 返回map的配置器
m.insert()         // 插入元素
m.key_comp()       // 返回比较元素key的函数
m.lower_bound()    // 返回键值>=给定元素的第一个位置
m.max_size()       // 返回可以容纳的最大元素个数
m.rbegin()         // 返回一个指向map尾部的逆向迭代器
m.rend()           // 返回一个指向map头部的逆向迭代器
m.size()           // 返回map中元素的个数
m.swap()           // 交换两个map
m.upper_bound()    // 返回键值>给定元素的第一个位置
m.value_comp()     // 返回比较元素value的函数

6、string

string str;
str.push_back(); // 在尾部插入元素
str.pop_back(); // 在尾部弹出元素
str.substr(pos, n); // 从下标为pos开始截取字符串,截取长度为n
int pos = str.find("QQ"); // 查找子字符串"QQ"的位置
str.insert(5, "Beautiful"); // 在下标5处插入字符串"Beautiful"
str.erase(s.begin() + 1); // 使下标1的字符删除
sort(s.begin(), s.end()) // 排序,需要头文件#include <algorithm>

  • 21
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值