list map vector set 常用函数列表
#include <stdio.h>
#include <iostream>//cin,cout
#include <sstream>//ss transfer.
#include <fstream>//file
#include "myclass.h"
#include <list>
#include <map>
#include <vector>
#include <algorithm>
#include <memory> using namespace std;
//list
//assign() 给list赋值
//back() 返回最后一个元素
//begin() 返回指向第一个元素的迭代器
//clear() 删除所有元素
//empty() 如果list是空的则返回true
//end() 返回末尾的迭代器
//erase() 删除一个元素
//front() 返回第一个元素
//get_allocator() 返回list的配置器
//insert() 插入一个元素到list中
//max_size() 返回list能容纳的最大元素数量
//merge() 合并两个list
//pop_back() 删除最后一个元素
//pop_front() 删除第一个元素
//push_back() 在list的末尾添加一个元素
//push_front() 在list的头部添加一个元素
//rbegin() 返回指向第一个元素的逆向迭代器
//remove() 从list删除元素
//remove_if() 按指定条件删除元素
//rend() 指向list末尾的逆向迭代器
//resize() 改变list的大小
//reverse() 把list的元素倒转
//size() 返回list中的元素个数
//sort() 给list排序
//splice() 合并两个list
//swap() 交换两个list
//unique() 删除list中重复的元素 //vector
//c.assign(beg,end)c.assign(n,elem) 将[beg; end)区间中的数据赋值给c。将n个elem的拷贝赋值给c。
//c.at(idx) 传回索引idx所指的数据,如果idx越界,抛出out_of_range。
//c.back() // 传回最后一个数据,不检查这个数据是否存在。
//c.begin() // 传回迭代器中的第一个数据地址。
//c.capacity() // 返回容器中数据个数。
//c.clear() // 移除容器中所有数据。
//c.empty() // 判断容器是否为空。
//c.end() // 指向迭代器中末端元素的下一个,指向一个不存在元素。
//c.erase(pos) // 删除pos位置的数据,传回下一个数据的位置。
//c.erase(beg,end) //删除[beg,end)区间的数据,传回下一个数据的位置。
//c.front() // 传回第一个数据。
//get_allocator // 使用构造函数返回一个拷贝。
//c.insert(pos,elem) // 在pos位置插入一个elem拷贝,传回新数据位置。
//c.insert(pos,n,elem) // 在pos位置插入n个elem数据。无返回值。
//c.insert(pos,beg,end) // 在pos位置插入在[beg,end)区间的数据。无返回值。
//c.max_size() // 返回容器中最大数据的数量。
//c.pop_back() // 删除最后一个数据。
//c.push_back(elem) // 在尾部加入一个数据。
//c.rbegin() // 传回一个逆向队列的第一个数据。
//c.rend() // 传回一个逆向队列的最后一个数据的下一个位置。
//c.resize(num) // 重新指定队列的长度。
//c.reserve() // 保留适当的容量。
//c.size() // 返回容器中实际数据的个数。
//c1.swap(c2)
//swap(c1,c2) // 将c1和c2元素互换。同上操作。
//operator[] // 返回容器中指定位置的一个引用。 //set
//set的各成员函数列表如下:
//:begin()--返回指向第一个元素的迭代器
//:clear()--清除所有元素
//:count()--返回某个值元素的个数
//:empty()--如果集合为空,返回true
//:end()--返回指向最后一个元素的迭代器
//:equal_range()--返回集合中与给定值相等的上下限的两个迭代器
//:erase()--删除集合中的元素
//:find()--返回一个指向被查找到元素的迭代器
//:get_allocator()--返回集合的分配器
//:insert()--在集合中插入元素
//:lower_bound()--返回指向大于(或等于)某值的第一个元素的迭代器
//:key_comp()--返回一个用于元素间值比较的函数
//:max_size()--返回集合能容纳的元素的最大限值
//:rbegin()--返回指向集合中最后一个元素的反向迭代器
//:rend()--返回指向集合中第一个元素的反向迭代器
//:size()--集合中元素的数目
//:swap()--交换两个集合变量
//:upper_bound()--返回大于某个值元素的迭代器
//:value_comp()--返回一个用于比较元素间的值的函数 //map
//C++ Maps是一种关联式容器,包含“关键字/值”对 //insert() 插入元素 //erase() 删除一个元素
//clear() 删除所有元素
//find() 查找一个元素 //swap() 交换两个map //begin() 返回指向map头部的迭代器
//end() 返回指向map末尾的迭代器
//lower_bound() 返回键值>=给定元素的第一个位置
//upper_bound() 返回键值>给定元素的第一个位置
//rbegin() 返回一个指向map尾部的逆向迭代器
//rend() 返回一个指向map头部的逆向迭代器 //empty() 如果map为空则返回true
//max_size() 返回可以容纳的最大元素个数
//size() 返回map中元素的个数
//count() 返回指定元素出现的次数 //value_comp() 返回比较元素value的函数
//key_comp() 返回比较元素key的函数
//get_allocator() 返回map的配置器
//equal_range() 返回特殊条目的迭代器对 int main()
{
list<int> li;
li.push_back();
li.push_back();
li.push_back();
li.push_back(); list<int>::iterator itl=li.begin();
for(itl; itl!=li.end(); ++itl)
{
cout<<*itl<<endl;
} map<char,vector<string> > express;
vector<string> astr;
astr.push_back("hi");
astr.push_back("whats your name?"); vector<string> qstr;
qstr.push_back("hi");
qstr.push_back("my name is lucy!"); express['Q']=qstr;//map insert.
express['A']=astr; map<char,vector<string> >::iterator it=express.find('Q');//map find; map<char,vector<string> >::iterator it2=express.find('A');//map find;
vector<string> fstr=it->second; for(int i=; i!=fstr.size(); ++i)
{
cout<<fstr[i]<<endl;
} cout<< express.value_comp()(*it,*it2)<<endl;//容器的算法,比较value,对于map来说还是比较key. it.key < it2.key 返回true. allocator<map<char,vector<string> > > alloc= express.get_allocator(); alloc.destroy(); cout<<express.size()<<endl;
express.erase(it);
cout<<express.size()<<endl; return ;
}
map 的一个坑:
千万不要写成 abc[i] 来 查找一个元素。
abc[i]是表示map 的value.直接写。就等于给abc[i],用了默认的value 了。
map<int,string> abc;
abc.insert(map<int,string>::value_type(,"hi"));
abc.insert(map<int,string>::value_type(,"ok")); cout<<abc.size()<<endl;
// abc[2]="hi";
// abc[6]="ok";
// abc[2]="test"; for(auto &a : abc)
{
cout<<a.first<<":"<<a.second<<endl;
} for(int i=;i<abc.size();++i)
{
cout<<i<<":"<<abc[i]<<endl;
}
使用下面的进行便利。但要注意
for(auto &a ,是否需要修改元素,需要修改才用引用。否则用变量名,会调用赋值。一个临时变量而已。。
map<int,int> abc;
abc.insert(map<int,int>::value_type(,));
abc.insert(map<int,int>::value_type(,)); cout<<abc.size()<<endl; // abc[2]="hi";
// abc[6]="ok";
// abc[2]="test"; for(auto &a : abc)
{
a.second=;
cout<<a.first<<":"<<a.second<<endl;
} for(auto a : abc)
{
cout<<a.first<<":"<<a.second<<endl;
}
关于 swap 效率分析。
void swapabc(vector<string>& a,vector<string>& b)
{
b=a;
a.clear();
} int main()
{
vector<string> v1;
for(int i=;i<;++i)
{
v1.push_back("abc");
} vector<string> v2;
LSU_TIME::Timer a();
for(int i=;i<;++i)
{
v1.swap(v2);
v2.swap(v1);
}
cout<<a.SpanTime()<<endl; LSU_TIME::Timer b();
for(int i=;i<;++i)
{
swapabc(v1,v2);
swapabc(v2,v1);
}
cout<<b.SpanTime()<<endl;
只有一条数据swap 还是比一般的赋值,清空快1倍。基本说明只是交换指针。
而有1000条数据。swap 的效率是一般赋值,清空的600倍。
所以多线程下。数据的锁定,可以及时的用swap .之后放锁。
交换指针 1000次,是0.1毫秒。那么一般的内置类型赋值就是0.00005毫秒。
也就是1秒内可以1亿次赋值运算。还是虚拟机内。所以1秒的话可以最少3亿次赋值。
也就是说1万个并发。除去0.5秒的网络来回。如果要1秒内回应。
一个完整的处理最多1万次等同赋值的操作。
所以在快速反映的程序中。基本不能有千次级别的查询。不然几个查询下来,就就支持不了万并发了。
list map vector set 常用函数列表的更多相关文章
- LoadRunner常用函数列表
LoadRunner常用函数列表 Web相关函数 函 数 功 能 描 述 web_custom_request 用户可以通过该函数自行创建一个HTTP请求的函数 web_image 模拟用户单击 ...
- 转:LoadRunner常用函数列表
Web相关函数 函 数 功 能 描 述 web_custom_request 用户可以通过该函数自行创建一个HTTP请求的函数 web_image 模拟用户单击图片操作的函数 web_link ...
- unity shader 常用函数列表
此篇博客转自csdn的一位大牛. 中间排版出了一些问题 Intrinsic Functions (DirectX HLSL) The following table lists the intrins ...
- MySQL 常用函数列表
一.数学函数 select SQRT (2) --取平方根select ABS (-234) --取绝对值select FLOOR (COUNT (*)/5.0) from news --取小于这个小 ...
- Fortran中常用函数列表
Y=INT(X) 转换为整数 ALL(所有型态) INTEGER Y=REAL(X) 转换为实数 INTEGER REAL Y=DREAL(X) 取复数实部(倍精度) COMPLEX*16 REAL* ...
- C#.net的常用函数列表
原文发布时间为:2008-08-03 -- 来源于本人的百度文章 [由搬家工具导入] 1、DateTime 数字型 System.DateTime currentTime=new System.Dat ...
- c#.net常用函数列表
.DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.Da ...
- C++——STL之vector, list, deque容器对比与常用函数
STL 三种顺序容器的特性对比: vector 可变数组,内存空间是连续的,容量不会进行缩减.支持高效随机存取,即支持[]和at()操作.尾部插入删除效率高,其他位置插删效率较低: list 双向链表 ...
- LoadRunner中常用函数参考手册
基础篇1:LoadRunner中常用函数参考手册 常用函数列表 web_url web_submmit_form VS web_submmit_data VS web_custom_request w ...
随机推荐
- FTP上传类
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Net;usi ...
- 在centos6.5上面mount微软系统上安装ftp服务器
---恢复内容开始--- 现在用虚拟机开发linux软件,发现虚拟机提供的共享文件夹不能很好地工作,表现为: 1.我在windows上面修改了文件内容,在linux里面发现文件内容没有变化,需要做些等 ...
- SQLServer学习笔记<>相关子查询及复杂查询
二.查询缺少值的查询 在这里我们加入要查询2008年每一天的订单有多少?首先我们可以查询下订单表的订单日期在2008年的所有订单信息. 1 select distinct orderdate,coun ...
- function adapter(函数适配器)和迭代器适配器
所谓function adapter(函数适配器)是指能够将不同的函数对象(或是和某值或某寻常函数)结合起来的东西,它自身也是个函数对象. 迭代器适配器 运用STL中的迭代器适配器,可以使得算法能够 ...
- CSS3 功能
1. CSS3在css2的基础上增加了很多功能,ie8以下的浏览器有可能不支持某些属性,增加了很多圆角.渐变.旋转.阴影等效果 2. 文本修饰 text-decoration 属性用来设置或删除文 ...
- PRINCE2七大原则(1)
PRINCE2七大原则(1) 我们先来回顾一下,PRINCE2七大原则分别是持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁. 第二个原则:吸取经验教训. PRINCE2要求 ...
- cookie与localstorage和sessionstorage的区别比较
保存位置: 三者均保存在浏览器端,且同源的. 与服务器的关系: cookie 数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递. sessionStorage ...
- Linux hrtimer分析(2)
http://blog.csdn.net/angle_birds/article/details/17375901 本文介绍Linux2.6.29中,配置高精度模式的hrtimer与未配置高精度模式时 ...
- 集合(Collection)使用笔记
Collections.unmodifiableCollection这个可以得到一个集合的镜像,它的返回结果不可直接被改变,否则会提示 java.lang.UnsupportedOperationEx ...
- 华东交通大学2016年ACM“双基”程序设计竞赛 1002
Problem Description 今天小学弟又训练完了,但是小学弟又不想看球赛,于是小学弟看马赛了.他发现马鞍是一个奇怪的东西.于是小学弟根据马鞍定义了一种马鞍数:在一个二位矩阵中,马鞍数在当前 ...