当前位置: 首页 > article >正文

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来访问键值对。

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


http://www.kler.cn/news/334775.html

相关文章:

  • 【网络安全】绕过 Etplorer 管理面板实现RCE
  • ElasticSearch高级功能详解与读写性能调优
  • HTB:Preignition[WriteUP]
  • 查找与排序-插入排序
  • 新闻推荐系统:Spring Boot与大数据
  • 计算机网络——http和web
  • 2024年最新大模型LLM学习路径全解析!看完你就是LLM大师
  • 解决跨域问题
  • C++ | Leetcode C++题解之第455题分发饼干
  • 【算法】哈希映射(C/C++)
  • Kubernetes-使用不同主机终端访问k8s 集群。
  • windows上安装python环境
  • CSS元素堆叠
  • Redis:list类型
  • ThinkPHP5基础入门
  • STM32(五)GPIO输入硬件电路及C语言知识复习
  • MATLAB guide选择图片和全局变量使用
  • 【Android】CarWatchDog I/O监控服务
  • 方法重写与多态
  • 速盾:游戏加速下载可以用cdn吗?