首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【C++修行之道】STL(初识pairvector

它是标准库中定义模板类。 vector为可变长数组(动态数组),定义vector数组可以随时添加数值和删除元素。...迭代器: vector提供了迭代器,可以用于遍历容器中元素。可以使用begin()函数获取指向第一个元素迭代器,使用end()函数获取指向最后一个元素之后位置迭代器。...():将元素添加到vector末尾 void push back(const T&value); pop_back():删除vector末尾元素(保证vector非空) void pop_back...vec.end()返回指向最后一个元素之后位置迭代器 去重: 要去除vector重复元素,可以使用std:unique函数。...然后,std:unique函数将重复元素移动到vector末尾,并返回一个指向重复元素迭代器。最后,可以使用vec.erase函数将重复元素vector中删除。

22010
您找到你想要的搜索结果了吗?
是的
没有找到

盘点Vector类、Vector类向量中添加元素常用方法、Vector类向量中删除元素对象常用方法

Vector(int size) 第三种构造方法创建指定大小向量,并且增量用 incr 指定。增量表示向量每次增加元素数目。...Vector(int size,int incr) 第四种构造方法创建一个包含集合 c 元素向量: Vector(Collection c) Vector类有4种构造方法参考《菜鸟教程》 二、Vector...三、Vector类向量中删除元素对象常用方法 1.void removeAllElement( )删除集合中所有元素,并将把大小设置为0。...四、总结 本文主要介绍了Vector类、Vector类向量中添加元素常用方法、Vector类向量中删除元素对象常用方法。 Vector类是实现动态数组功能,介绍它4种构造方法。...Vector类向量中删除元素对象常用方法有removeAllElement( )删除集合中所有元素,并将把大小设置为0、removeElement(Object obj)从向量中删除第一个出现参数

1.6K40

c++ vector删除多个元素方法

参考链接: C++ : Vector删除所有指定元素 转自:https://blog.csdn.net/daofengdeba/article/details/7865229  在vector中由于有多个符合要求元素需要删除...其实这里面隐藏着一个很严重错误:当veci.erase(iter)之后,iter就变成了一个野指针,对一个野指针进行 iter++ 是肯定会出错。 ...查看MSDN,对于erase返回值是这样描述:An iterator that designates the first element remaining beyond any elements...removed, or a pointer to the end of the vector if no such element exists,于是改代码:  for(vector::iterator..."3"; 2)当3位于vector最后位置时候,也会出错(在veci.end()上执行 ++ 操作)  正确代码应该为:  for(vector::iterator iter=veci.begin

2.5K20

【C++ 语言】vector 容器 ( 容器分类 | vector 声明 | vector 初始化 | vector 容器元素增删查改 )

声明 vector ( 基本用法 ) : 格式 " vector 容器名称 ; " ; 声明 vector 容器 , 尖括号中元素类型名称 , 是容器中存储元素类型 ; //声明向量...; //表示创建有 8 个元素向量 , 8 个元素值都是 2 vector vector_3(8 , 2); 4...., 容器出入策略 , 后进先出 vector_1.push_back(8); vector_1.push_back(88); vector ( 向量 ) 查询元素 ---- 下面获取元素都是基于上面小节添加元素...通过 at() 方法获取对应索引元素 ; // 通过 at() 方法获取对应索引元素 cout << "通过 at 方法获取 vector_1 第 0 个元素 : vector_1.at...关于删除元素内存说明 : 删除若干元素后 , vector 容量 , 即内存所占空间是不会减小 ; 5.

73130

【C++】STL 容器 - vector 动态数组容器 ⑤ ( vector 容器元素访问 | at 函数 | [] 运算符重载 函数 | vector 容器首尾元素访问 )

文章目录 一、 vector 容器元素访问 1、vector 容器访问指定索引元素 - at 函数 2、vector 容器访问指定索引元素 - [] 运算符重载 函数 二、 vector 容器首尾元素访问...1、vector 容器首尾元素访问函数 2、代码示例 - vector 容器首尾元素访问 一、 vector 容器元素访问 1、vector 容器访问指定索引元素 - at 函数 vector 容器访问指定索引元素...容器访问指定索引元素 - [] 运算符重载 函数 vector 容器可以使用 [] 运算符访问其元素 , 调用是 [] 运算符重载 函数 , 函数原型如下 : reference operator...容器首尾元素访问函数 vector 容器首尾元素访问函数 : 访问 vector 容器首元素 : vector 容器类 front() 成员函数返回一个常量引用 , 表示容器中第一个元素 ; const_reference...front() const noexcept; 访问 vector 容器尾元素 : vector 容器类 back() 成员函数返回一个常量引用 , 表示容器中最后一个元素 ; const_reference

14010

C++ std::vector元素内存分配问题

): 对于std::vector vec;vec在栈上(stack),而其中元素T保存在堆上(heap); 对于std::vector* Vec = new std::vector...();vec和其中元素T都保存在堆上; 对于std::vector vec;vec在栈上(stack),而其中元素T保存在堆上(heap);和第一种情况类似。...中元素在栈上创建..." << '\n'; else cout << "std::vector元素在堆上创建..." << '\n'; return 0; } 运行结果: ?...可以看到std::vector元素A是在栈上创建。而且是在push_back时候将栈上对象通过拷贝复制到堆上去。...所以,我个人觉得两者主要区别在于:std::vector和std::vector元素T都是存储在栈上,而且std::vector不用手动管理内存空间,而std::vector<T

3.2K30

【C++】STL 容器 - set 集合容器 ⑥ ( pair 对组简介 | pair 对组元素访问 | set 集合容器 insert 插入结果类型 - pair 对组 )

文章目录 一、pair 对组 1、pair 对组 简介 2、pair 对组元素访问 3、代码示例 - pair 对组 4、set 集合容器存储 pair 对组元素 二、set 集合容器 insert 插入结果类型...; std::pair 是 C++ 语言 标准模板库 中一个模板类 , 该类主要作用是 将两个 不同类型 或 相同类型 对象 组合成一个 对组 ; 该 对组 对象 可以作为一个单独元素进行存储和操作...> 头文件 ; #include 2、pair 对组元素访问 pair 对组中 存放两个类型值 , 这两个类型可以不一样 , 如 T1 值类型为 int , T2...对组元素 当需要在 std::set 集合容器 中存储两个相关联值时 , 可以使用 std::pair 对组值 作为 set 集合容器中元素 ; std::pair 对组是一个模板类 , 用于存储两个可能不同类型对象作为一对...调用 std::set#insert 函数 , 向该 set 容器中插入元素 , 返回一个 pair 类型对组 ; 该对组第一个值是迭代器 , 迭代器类型是 set

15610

C++(STL):08---vector元素访问

本文将给大家带来分享:vector中访问元素和迭代器失效问题,这两部分是在日常工作开发中经常遇到,也是容易犯错地方,同时也是在面试过程中经常被问到。...1.访问vector容器中单个元素 首先,vector 容器可以向普通数组那样访问存储元素,甚至对指定下标处元素进行修改,比如: #include #include <vector...:5 values 新元素为:10 values 新元素为:20 另外,vector 容器还提供了 data() 成员函数,该函数功能是返回指向容器中首个元素指针。...size() 成员函数,该函数可以返回 vector 容器中实际存储元素个数。...vector 容器容量,而不是实际存储元素个数,这两者是有差别的。

75620

常用集合算法---求交集--set_intersection

set_intersection求两个容器交集 注意: 两个集合必须是有序序列,顺序一致(都是升序,都是倒序) 返回目标容器是最后一个元素迭代器地址,即接收集合数据容器中最后一个元素迭代器地址...#include using namespace std; #include #include class p { public: void...; vector v2 = { 4, 5, 6, 7, 8, 9, 10, 11, 12 }; vector v3; //min是标准算法头文件里面的一个函数 //最特殊情况...,大容器包含小容器,开辟空间取小容器size即可 v3.resize(min(v1.size(), v2.size())); //返回是v3容器最后一个迭代器地址 vector::iterator...v3end=set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), v3.begin()); cout << "打印v3容器全部元素

1K10

盘点Vector类搜索向量中元素常用方法

一、Vector类搜索向量中元素常用方法 1.Object firstElement():返回是这个向量第一个元素。...三、Vector类void setSize(int newSize)方法 1.void setSize(int newSize)方法是设置集合容量大小是newSize,若newSize大于当前集合元素个数...五、总结 本文主要介绍了Vector类搜索向量中元素常用方法、Vector类获取向量基本信息常用方法、Vectorvoid setSize(int newSize)方法是设置集合容量大小、void...Vector类搜索向量中元素常用方法有firstElement()方法是返回向量第一个元素、lastElement()方法是返回向量最后一个元素、ElementAt(int index)方法返回指定...Vector类获取向量基本信息常用方法有capacity()方法返回是这个向量的当前容量、size()方法返回是这个向量元素数。通过本文学习,希望对你有所帮助!

80020

9.1 C++ STL 排序、算数与集合

pair range = equal_range(iArray, iArray + len, 5); cout << "lower_bound = " << *range.first...<em>set_intersection</em>函数返回两个集合<em>的</em>交集,set_union函数返回两个集合<em>的</em>并集,set_difference函数返回两个集合<em>的</em>差集。...<em>set_intersection</em>、set_union和set_difference函数使用<em>的</em>是归并排序<em>的</em>思想,可以高效地计算两个集合<em>的</em>交集、并集和差集。...具体实现方式为,从输入集合<em>的</em>第一个<em>元素</em>开始遍历,将两个集合中相同<em>的</em><em>元素</em>复制到输出序列中(<em>set_intersection</em>),将所有<em>元素</em>(包括重复<em>元素</em>)复制到输出序列中(set_union),将只存在于第一个集合中<em>的</em><em>元素</em>复制到输出序列中...), var2.size())); <em>vector</em>::iterator itEnd; itEnd = <em>set_intersection</em>(var1.begin(), var1.end(),

16720

cc++:基于for each pair 遍历 __VA_ARGS__ 中元素,实现定义struct

https://blog.csdn.net/10km/article/details/80798072 在上一篇博客《c/c++:for each遍历 __VA_ARGS__ 中每一个元素...》,我们具备了遍历__VA_ARGS__中元素能力,那么具备这个能力有啥用呢?...我们需要能遍历成对参数能力,这就是下面的宏FL_VA_FOREACH_PAIR,这个函数宏对__VA_ARGS__(必须是偶数个)中参数以两个一组为单位进行遍历。...FL_VA_FOREACH_PAIR_(sepatator,fun,funarg,__VA_ARGS__) 利用上面的FL_VA_FOREACH_PAIR我们可以创建一个定义struct宏FL_DEF_STRUCT...,动态参数提成员类型和名字,最多支持32个成员 // clsName##_为元素名前缀 // 对__VA_ARGS__参数成对遍历,对每一对参数执行fl_def_struct_field函数 // fl_def_struct_field

1.5K10

【蓝桥杯】ALGO-10 集合运算

输入描述: 第一行为一个整数n,表示集合A中元素个数。 第二行有n个互不相同用空格隔开整数,表示集合A中元素。 第三行为一个整数m,表示集合B中元素个数。...第四行有m个互不相同用空格隔开整数,表示集合B中元素。 集合中所有元素均为int范围内整数,n、m< =1000。 输出描述: 第一行按从小到大顺序输出A、B交集中所有元素。...第二行按从小到大顺序输出A、B并集中所有元素。 第三行按从小到大顺序输出B在A中余集中所有元素。...:①set_intersection求集合交集,②set_union求集合并集,③set_difference求集合差集。... v1,v2,v3; //交集v1,并集v2,差集v3 set_intersection(A.begin(),A.end(),B.begin(),B.end(),back_inserter

45510
领券