关于STL的一些理解

2023-05-16

1.

  集合set。定义:

set<int> s1; 类型可选。

se.begin() 返回指向第一个元素的迭代器
se.clear() 清除所有元素  //常用
se.count() 返回某个值元素的个数  //常用,一般用来查这个元素在不在集合中
se.empty() 如果集合为空,返回true
se.end() 返回指向最后一个元素之后的迭代器,不是最后一个元素
se.erase() 删除集合中的元素  //常用
se.find() 返回一个指向被查找到元素的迭代器
se.insert() 在集合中插入元素  //常用
se.max_size() 返回集合能容纳的元素的最大限值
se.size() 集合中元素的数目
se.swap() 交换两个集合变量

遍历用到迭代器。

 

for (set<int>::iterator it = s.begin(); it != s.end(); ++it) {

cout << *it << endl;

}

2.

map

定义   map< string , int > m;

以一个string形式的变量指向一个int型的变量(个人理解)

 map<string,string> aaa;

aaa [ b ] =a;

3.

queue的用法

queue<int> a;

a.push   push即在队尾插入一个元素

a.pop  将队列中最靠前位置的元素拿掉,是没有返回值的void函数

a.size  返回队列中元素的个数,返回值类型为unsigned int

a.empty  判断队列是否为空的,如果为空则返回true

a.front   返回值为队列中的第一个元素,也就是最早、最先进入队列的元素。注意这里只是返回最早进入的元素,并没有把它剔除出队列。

a.back   返回队列中最后一个元素,也就是最晚进去的元素。

4.

vector

vec.begin()//指向迭代器中第一个元素。 
vec.end()//指向迭代器中末端元素的下一个,指向一个不存在元素。		
vec.push_back(elem)		//在尾部加入一个数据。
vec.pop_back()			//删除最后一个数据。
vec.capacity()	//vector可用空间的大小。
vec.size()//返回容器中数据个数。
vec.empty()	//判断容器是否为空。
vec.front()		//传回第一个数据。
vec.back()	//传回最后一个数据,不检查这个数据是否存在。
vec.at(index)	//传回索引idx所指的数据,如果idx越界,抛出out_of_range。
vec.clear()	//移除容器中所有数据。
vec.erase(iterator)	//删除pos位置的数据,传回下一个数据的位置。
vec.erase(begin,end)	//删除[beg,end)区间的数据,传回下一个数据的位置。注意:begin和end为iterator
vec.insert(position,elem)	//在pos位置插入一个elem拷贝,传回新数据位置。
vec.insert(position,n,elem)	//在pos位置插入n个elem数据,无返回值。
vec.insert(position,begin,end)	//在pos位置插入在[beg,end)区间的数据,无返回值。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于STL的一些理解 的相关文章

  • STL 迭代器对结束(过去的结束)迭代器重新验证?

    请参阅有关尾后迭代器失效的相关问题 this https stackoverflow com questions 11350454 past the end iterator invalidation in c11 this https s
  • std::find 的优点

    使用 C 11 有什么优势吗std find超过一个容器的find method 如果是std vector 其中没有find方法 确实std find使用一些智能算法或简单地迭代每个元素的天真的方法 如果是std map看来你需要传递一个
  • C++中的地图数据结构是什么[重复]

    这个问题在这里已经有答案了 C 中以下代码行使用的数据结构是什么 map
  • 使用 std 算法将容器分区/批量/分块为大小相等的块

    我遇到过一种情况 我必须将一组记录批量处理到数据库中 我想知道如何才能做到这一点标准算法 给定 10002 条记录 我希望将其划分为 100 条记录的 bin 进行处理 其余为 2 条记录的 bin 希望下面的代码能够更好地说明我想要完成的
  • 为什么编译器无法用文字确定 std::max 的模板?

    既不是 clang 也不是 gcc 编译这个 include
  • 使用连续内存并具有保留功能的映射和集合

    我使用了几张地图和套件 缺乏连续内存以及大量的分配 解除 是性能瓶颈 我需要一个主要与 STL 兼容的映射和集合类 它可以将连续的内存块用于内部对象 或多个块 它还需要有一个reserve函数 以便我可以预先分配预期的大小 在我自己编写之前
  • 多线程程序中的 std::string

    鉴于 1 C 03标准没有以任何方式解决线程的存在 2 C 03 标准将其留给实现来决定是否std string应该在其复制构造函数中使用 Copy on Write 语义 3 写时复制语义通常会导致多线程程序中不可预测的行为 我得出以下看
  • 如何使用类初始化 STL 向量/列表而不调用复制构造函数

    我有一个 C 程序 它使用包含类实例的 std list 如果我打电话 例如myList push back MyClass variable 它经历创建临时变量的过程 然后立即将其复制到向量 然后删除临时变量 这远没有我想要的那么高效 而
  • 哪个STL容器?

    我需要一个容器 不一定是 STL 容器 它可以让我轻松执行以下操作 在任意位置插入和移除元素 通过索引访问元素 以任意顺序迭代元素 I used 标准 列表 但它不会让我在任何位置插入 确实如此 但为此我必须迭代所有元素 然后在我想要的位置
  • 从函数返回 STL 向量 - 复制成本

    当您从函数返回 stl 向量时 vector
  • C++ 中模板和 STL 的缺点 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用 STL 或模板有什么缺点吗 是否存在不适合的情况 首先 如果它们可以帮助您解决问题 您应该使用它们 模板是 C 非常重要的一部分 并且多年
  • 重写标准库使用的内存分配方法? [复制]

    这个问题在这里已经有答案了 是否可以覆盖 STL 分配 管理和释放内存的方式 如果可能的话 人们会怎样做呢 有没有一种方法可以将处理原始内存的代码保留在一个类或文件中 我想对我的整个程序执行此操作 以便我可以跟踪内存使用情况 时间和生命周期
  • C++ 中的映射的多个键

    我有一个表 其中的条目是这样的 Row Column1 Column2 Column3 Column4 1 0X0A 1 2 A 2 0X0B 2 2 B 3 0x0C 3 2 C 现在我想使用映射 以便我可以使用第 1 列或第 2 列作为
  • 从 std::list 中删除具有特定值的元素

    我需要从 std list 中删除具有特定值的元素 随着list
  • 专门化 STL 算法,以便它们在可用时自动调用高效的容器成员函数

    STL 具有全局算法 可以在任意容器上运行 只要它们支持该算法的基本要求 例如 某些算法可能要求容器具有随机访问迭代器 例如向量而不是列表 当容器具有比通用算法更快的执行方式时 它会提供具有相同名称的成员函数来实现相同的目标 就像提供自己的
  • 使用 std::istream_iterator 限制 std::copy 的范围

    我构建了一个最小的工作示例来展示我在使用 STL 迭代器时遇到的问题 我在用着istream iterator读书floatss 或其他类型 来自 astd istream include
  • STL容器如何复制对象?

    我知道 STL 容器 比如vector添加对象时复制该对象 push back方法如下 void push back const T x 我很惊讶地发现它把该项目作为参考 我编写了一个示例程序来看看它是如何工作的 struct Foo Fo
  • 在 C++ 中将惰性生成器实现为forward_iterator

    MyGenerator 表示 可能 有限的整数序列 计算成本很高 所以我不想预先生成它们并将它们放入容器中 struct MyGenerator bool HasNext int Next 要打印全部 MyGenerator generat
  • STL 映射值构造函数

    我有一个类 X 我想将其放入 std map 类型的 STL 映射中 STL 映射需要将 X 存储在内存中的某个位置 因此我正在寻找一种有效的 运行时和内存 方法来创建 X 并将其存储在映射中 我注意到以下代码 其中 x 是 X 类型的对象
  • 为什么这个 C++ STL 分配器不分配?

    我正在尝试编写一个派生自的自定义 STL 分配器std allocator 但不知何故所有的电话allocate 去基础班 我已将范围缩小到以下代码 template

随机推荐