vector中数据进行去重和排序
int a[] = {, , , , , , ,};
std::vector<int> vec(a, a+sizeof(a)/sizeof(int) );
std::sort(vec.begin(), vec.end() );
vector<int>::iterator iter_end;
iter_end = std::unique(vec.begin(), vec.end() );
vec.erase(iter_end, vec.end() );
对如下函数一一说明:
sort:从小到大排序。程序执行到sort后的结果:

unique:元素去重,unique返回重复元素开始的位置,并且会改变原vec的向量值。程序执行到unique后的结果(输出此时的Vec):

earse:删除元素。程序执行到erase后的结果(输出此时的Vec):

完成对vector的去重和排序
另外说明vertor的几个属性
capacity:系统现在给vector分配的内存大小
size:vector现有的数据大小
max_size:系统可以给给vector分配的最大容量
// comparing size, capacity and max_size
#include <iostream>
#include <vector> int main ()
{
std::vector<int> myvector; // set some content in the vector:
for (int i=; i<; i++) myvector.push_back(i); std::cout << "size: " << (int) myvector.size() << '\n';
std::cout << "capacity: " << (int) myvector.capacity() << '\n';
std::cout << "max_size: " << (int) myvector.max_size() << '\n';
return ;
}
结果:
size:
capacity:
max_size:
再给个例子补充一下erase的用法:
// vector_erase.cpp
// compile with: /EHsc
#include <vector>
#include <iostream> using namespace std; int main()
{ vector <int> vec;
vector <int>::iterator pos; vec.push_back();
vec.push_back();
vec.push_back();
vec.push_back();
vec.push_back(); cout << "Capacity = " << vec.capacity() << endl;
cout << "vec =";
for (pos = vec.begin(); pos != vec.end(); ++pos)
{
cout << " " << *pos;
}
cout << endl; vec.erase(vec.begin());
cout << "vec = ";
for (pos = vec.begin(); pos != vec.end(); ++pos)
{
cout << " " << *pos;
}
cout << endl; vec.erase(vec.begin() + , vec.begin() + );
cout << "vec = ";
for (pos = vec.begin(); pos != vec.end(); ++pos)
{
cout << " " << *pos;
}
cout << endl;
cout << "Capacity after erase calls = " << vec.capacity() << endl;
}
结果:
Capacity =
vec =
vec =
vec =
Capacity after erase calls = 6
来源:https://msdn.microsoft.com/en-us/library/ceh559x2.aspx
vector中数据进行去重和排序的更多相关文章
- vector中数据释放崩溃问题
struct LINE { char securityID[32]; /*!< 证券代码 */ int64_t dateTime; /*!< 日期时间(日期变化)YYYYMMDDhhmms ...
- [转载]EasyUI中数据表格DataGrid添加排序功能
我们这里演示的是EasyUI数据表格DataGrid从服务器端排序功能,因为觉的本地数据排序没有多大的作用,一般我们DataGrid不会读取全部数据,只会读取当前页的数据,所以本地数据排序也只是对当前 ...
- c++map按value排序--将map的pair对保存到vector中,然后写比较仿函数+sort完成排序过程。
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value.假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行 ...
- python中sorted()和set()去重,排序
前言 在看一个聊天机器人的神经网络模型训练前准备训练数据,需要对训练材料做处理(转化成张量)需要先提炼词干,然后对词干做去重和排序 words = sorted(list(set(words))) 对 ...
- 查漏补缺:Vector中去重
对于STL去重,可以使用<algorithm>中提供的unique()函数. unique()函数用于去除相邻元素中的重复元素(所以去重前需要对vector进行排序),只留下一个.返回去重 ...
- 【转】c++中Vector等STL容器的自定义排序
如果要自己定义STL容器的元素类最好满足STL容器对元素的要求 必须要求: 1.Copy构造函数 2.赋值=操作符 3.能够销毁对象的析构函数 另外: 1. ...
- 转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
转载自:http://www.cnblogs.com/cj695/p/3863142.html sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在 ...
- 【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法
sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能 ...
- Java使用极小的内存完成对超大数据的去重计数,用于实时计算中统计UV
Java使用极小的内存完成对超大数据的去重计数,用于实时计算中统计UV – lxw的大数据田地 http://lxw1234.com/archives/2015/09/516.htm Java使用极小 ...
随机推荐
- Simple, Poetic, Pithy
源自:Rob Pike points out Simple, Poetic, Pithy Don't communicate by sharing memory, share memory by co ...
- Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别
第一段 buildscript 里面的 repositories 表示只有编译工具才会用这个仓库. 比如 buildscript 里面的 dependencies classpath 'com.and ...
- 翻译:利用GDAL生成cogeoff文件
翻译自: Introducing the AWS Lambda Tiler https://hi.stamen.com/stamen-aws-lambda-tiler-blog-post-76fc11 ...
- 怎样从Java转换到Kotlin代码:现在就开始使用Kotlin(KAD 29)
作者:Antonio Leiva 时间:Jul, 4, 2017 原文链接:https://antonioleiva.com/kotlin-from-java/ Kotlin最神奇特性之一是它能与Ja ...
- logstash-input-jdbc and logstash-ouput-jdbc
要求通过logstash从oracle中获取数据,然后相应的直接传入mysql中去. 基本测试成功的配置文件如下: input { stdin { } jdbc { jdbc_connection_s ...
- js for循环实例
1.求1-100的寄数和? //2.奇数求和 var ppt=0 for(var i=1;i<=100;i+=2){ ppt+=i } 2.求1-100的偶数和 var num=0 for(va ...
- IDEA搭载Tomcat使用JSTL连接Oracle数据库
1.在IDEA中,JSTL库添加到WEB-INF/lib下面可以直接在JSP页面上通过 <%@ taglib uri="http://java.sun.com/jsp/jstl/cor ...
- 使用Python客户端(redis-py)连接Redis--华为云DCS for Redis使用经验
使用Python连接Redis,需要先安装Python以及redis-py,以CentOS为例,介绍redis-py的客户端环境搭建. 第0步:准备工作 华为云上购买1台弹性云服务器ECS(我选了Ce ...
- Ubuntu16.04安装wps办公软件解决文字缺失
先到wps官网下载linux版wps安装包 选择64位的alpha版本下载: 下载完后,同样是cd到Downloads目录,用dpkg命令来安装它: cd Downloads/ sudo dpkg ...
- Linux服务架设篇--arp命令
ARP,地址解析协议.在以太局域网中,主机之间交换数据帧时,是通过MAC地址进行的.因此,当以太网的一台主机向另一台IP地址的主机发送数据包时,它需要知道目的IP地址所对应的MAC地址,才能把这个IP ...