C++ STL常用查询手册

当然可以,以下是C++ STL中提到的几种容器的常用增删改查操作的函数,以及每个函数的文字说明,以表格形式展示:
vector:动态数组,可以增长和收缩。
list:双向链表。
deque:双端队列,支持快速的随机访问。
set:基于红黑树的有序不重复元素集合。
map:基于红黑树的键值对集合。

以下是C++ STL中提到的五种容器的增删改查操作的函数及其说明和返回值类型的表格:

操作类型vectorlistdequesetmap
push_back(x): 在尾部添加元素 xpush_back(x): 在尾部添加元素 xpush_back(x): 在尾部添加元素 xinsert(x): 将元素 x 插入到集合中insert(x): 将键值对 x 插入到映射中
push_front(x): 在头部添加元素 xpush_front(x): 在头部添加元素 xpush_front(x): 在头部添加元素 x
emplace_back(args): 构造元素并添加到尾部emplace_back(args): 构造元素并添加到尾部emplace_back(args): 构造元素并添加到尾部emplace(x): 构造元素并插入到集合中emplace(k, v): 构造键值对并插入到映射中
insert(pos, x): 在位置 pos 插入元素 xinsert(pos, x): 在位置 pos 插入元素 xinsert(pos, x): 在位置 pos 插入元素 xinsert(x): 在位置 pos 插入元素 xinsert(x): 在位置 pos 插入键值对 x
pop_back(): 删除尾部元素pop_back(): 删除尾部元素pop_back(): 删除尾部元素erase(x): 删除元素 xerase(k): 删除键为 k 的元素
pop_front(): 删除头部元素pop_front(): 删除头部元素pop_front(): 删除头部元素erase(first, last): 删除区间 [first, last)erase(first, last): 删除区间 [first, last)
erase(pos): 删除位置 pos 的元素erase(pos): 删除位置 pos 的元素erase(pos): 删除位置 pos 的元素clear(): 删除所有元素clear(): 删除所有元素
at(i): 返回索引 i 处的元素引用at(i): 返回索引 i 处的元素引用at(i): 返回索引 i 处的元素引用*find(x): 返回找到的元素的引用at(k): 返回键 k 处的元素值的引用
operator[](i): 返回索引 i 处的元素引用operator[](i): 返回索引 i 处的元素引用operator[](i): 返回索引 i 处的元素引用operator[](k): 返回键 k 处的元素值的引用
front(): 返回第一个元素的引用front(): 返回第一个元素的引用front(): 返回第一个元素的引用find(x): 返回找到的元素的迭代器find(k): 返回找到的键值对的迭代器
back(): 返回最后一个元素的引用back(): 返回最后一个元素的引用back(): 返回最后一个元素的引用
at(i): 返回索引 i 处的元素引用at(i): 返回索引 i 处的元素引用at(i): 返回索引 i 处的元素引用count(x): 返回元素 x 的数量count(k): 返回键 k 的数量
operator[](i): 返回索引 i 处的元素引用operator[](i): 返回索引 i 处的元素引用operator[](i): 返回索引 i 处的元素引用

返回值类型:

  • push_back(x), push_front(x), emplace_back(args), emplace_front(args): void
  • insert(pos, x): iterator
  • pop_back(), pop_front(): void
  • erase(pos), erase(first, last): iterator
  • clear(): void
  • at(i): 引用到指定索引的元素
  • operator[](i): 引用到指定索引的元素
  • front(), back(): 引用到第一个或最后一个元素
  • find(x), find(k): 指向找到元素的迭代器,如果未找到,则为 end() 迭代器

注意:setmap中的find(x)count(x)函数用于查找元素或键,map中的at(k)operator[](k)用于访问键对应的值。如果at(k)map中找不到给定的键,则抛出std::out_of_range异常。

说明:

  • :添加元素到容器中。

    • push_back(x)push_front(x) 分别在容器的尾部和头部添加元素 x
    • emplace_back(args), emplace_front(args), 和 emplace() 是就地构造元素,避免额外的复制或移动。
    • insert(pos, x) 可以在指定位置插入元素。
  • :从容器中删除元素。

    • pop_back()pop_front() 分别删除容器尾部和头部的元素。
    • erase(pos) 删除指定位置的元素或区间。
    • clear() 清空容器。
  • :修改容器中的元素。

    • at(i) 提供了访问指定位置元素的方法,若索引越界则抛出异常。
    • operator[](i) 也提供访问,但不检查越界。
  • :查询容器中的元素。

    • at(i)operator[](i) 用于访问元素。
    • front()back() 分别访问容器的第一个和最后一个元素。
    • find(x)setmap 中用于查找具有特定值的元素。
    • begin()end() 返回指向第一个元素和最后一个元素之后位置的迭代器。

这些操作是容器类的基本功能,使用时需要包含相应的头文件,例如 <vector>, <list>, <deque>, <set>, 和 <map>

以下是C++ STL中提到的五种容器的迭代器定义和使用示例代码:

#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <set>
#include <map>
#include <string>

using namespace std;

int main() {
    // vector
    vector<int> vec = {1, 2, 3, 4, 5};
    vector<int>::iterator vecIt;
    for (vecIt = vec.begin(); vecIt != vec.end(); ++vecIt) {
        cout << *vecIt << " ";
    }
    cout << endl;

    // list
    list<int> lst = {1, 2, 3, 4, 5};
    list<int>::iterator lstIt;
    for (lstIt = lst.begin(); lstIt != lst.end(); ++lstIt) {
        cout << *lstIt << " ";
    }
    cout << endl;

    // deque
    deque<int> deq = {1, 2, 3, 4, 5};
    deque<int>::iterator deqIt;
    for (deqIt = deq.begin(); deqIt != deq.end(); ++deqIt) {
        cout << *deqIt << " ";
    }
    cout << endl;

    // set
    set<int> st = {1, 2, 3, 4, 5};
    set<int>::iterator stIt;
    for (stIt = st.begin(); stIt != st.end(); ++stIt) {
        cout << *stIt << " ";
    }
    cout << endl;

    // map
    map<string, int> mp = {{"one", 1}, {"two", 2}, {"three", 3}};
    map<string, int>::iterator mpIt;
    for (mpIt = mp.begin(); mpIt != mp.end(); ++mpIt) {
        cout << mpIt->first << " : " << mpIt->second << " ";
    }
    cout << endl;

    return 0;
}

说明:

  1. vector:使用vector<int>::iterator定义迭代器vecIt

  2. list:使用list<int>::iterator定义迭代器lstIt

  3. deque:使用deque<int>::iterator定义迭代器deqIt

  4. set:使用set<int>::iterator定义迭代器stIt

  5. map:使用map<string, int>::iterator定义迭代器mpIt

迭代器用于遍历容器中的元素。在for循环中,迭代器从容器的begin()开始,直到end()结束。对于map,迭代器指向pair对象,可以使用->first->second来访问键值对。

注意,迭代器的定义应该在循环外部进行,以避免在每次迭代中重复定义迭代器,这有助于提高代码的清晰度和效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流云枫木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值