STL review:vector & string & map & struct
I.vector
1.头文件:#include<vector> //容器vector是一个能实现随机存取、插入删除的动态数组,还可以当栈使。
2.创建: vector<int> v1; // < >里可以是struct或者vector嵌套:vector< vector<int> > ivec;
vector是一个类模板,创建一个vector的过程称为实例化。
3.初始化:
- vector<T> v2(v1); // 效果同拷贝初始化 vector<T> v2=v1;
- vector<T> v2(n,val);
- vector<T> v2{a,b,c,d}; // vector<T> v2={a,b,c,d};
- 数组指针
int iarray[]={,,,,,,,,,,};
vector<int> v1(iarray,iarray+sizeof(iarray)/sizeof(int));
4.尾部插入数字:v1.push_back(a); // pop_back();
5.下标实现随机存取: v1[0]=a;
6.常用函数: empty() size() clear() <=
7.使用迭代器访问元素.
vector<int>::iterator it;
for(it=v1.begin();it!=v1.end();it++)
cout<<*it<<endl;
8.插入和删除 insert,erase 配合迭代器,如删除所有值为8的元素
v1.insert(v1.begin()+i,a); //在第i+1个元素前面插入a v1.erase(v1.begin()+2); //删除第3个元素
9.#include<algorithm>
(1) 元素翻转:
reverse(vec.begin(),vec.end()); //将元素翻转(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含.)
(2)排序:
bool Comp(const int &a,const int &b){
return a>b;
}
sort(vec.begin(),vec.end()); //升序排列
sort(vec.begin(),vec.end(),Comp) //降序排序
II.string
1.头文件:#include<string>
2.创建与初始化:类似vector
3.写入读取:
- cout<<s; cin>>s; //以空白(空格、换行、制表符)判断开始结尾,并忽略之
- getline(cin,s); //读一行,以换行符判断结束,并抛弃换行符
4.empty, size, +, =, <, [], append/push_back
5.关于字符变量的函数:isalnum,isalpha,isdigit / tolower,toupper <cctype>
6.高级:
- 子串: string substr(int pos = 0,int n = npos) const;//返回pos开始的n个字符组成的字符串
- 交换: void swap(string &s2); //交换当前字符串与s2的值
- 查找函数:
- int find(char c, int pos = 0) const;//从pos开始查找字符c在当前字符串的位置
- int find(const char *s, int pos, int n) const;//从pos开始查找字符串s中前n个字符在当前串中的位置
- int find(const string &s, int pos = 0) const;//从pos开始查找字符串s在当前串中的位置
III.map
1.头文件:#include<map> //容器map是一个能实现key到value单射的关联容器,对应数据结构为hash表,其内元素按键值升序排列,键值唯一。
2.构造:map <string,int> m1;
3.添加元素: m1["hello"]=5; //下标既能访问也能赋值也能添加,insert()添加效率高 insert(map<int, CString> :: value_type(2, "Two"))
4.常用函数: empty() size() clear() 迭代器 begin() , end(), erase() // m1.erase("hi"); m1.erase(it); m1.erase(it,it+5);
5.按键值查找一个元素 //根据key值快速查找记录,查找的复杂度基本是Log(N)
- 返回其迭代器: find() // if( m1.find("hi")==m1.end() ) 如果该key不存在
- 返回指定元素出现的次数: count()
IV. struct
//Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
typedef struct rect
{
int id;
int length; bool operator< (const rect &a) const
{
if(id!=a.id)
return id<a.id;
else
{
if(length!=a.length)
return length<a.length;
}
}
}Rect;
STL review:vector & string & map & struct的更多相关文章
- C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法
每次忘记都去查,真难啊 /* C/C++解题常用STL大礼包 含vector,map,set,queue(含优先队列) ,stack的常用用法 */ /* vector常用用法 */ //头文件 #i ...
- Effective STL 学习笔记 Item 16:vector, string & C API
有时需要支持 C 的接口,但这并不复杂. 对于 vector 来讲, \(v[0]\) 的地址 \(\&v[0]\) 即可作为数组指针传递给 C API: 1: // Legacy C API ...
- 10、Cocos2dx 3.0游戏开发找小三之容器篇:Vector、Map、Value
重开发人员的劳动成果.转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27705613 容器 3.0版本号之前Cocos2d- ...
- C++ 标准模板库(STL):vector
目录 1. vector 1.1 vector的定义 1.2 vector容器内元素的访问 1.3 vector 常用函数实例解析 1.4 vector的常见用途 1. vector 变长数组,长度根 ...
- CPP-STL:vector容器
1. vector容器简介: vector向量容器是一种随机访问的数组类型,它提供了对数组元素的快速访问.随机访问,以及在序列尾部快速.随机地插入和删除操作.它类似于数据结构中的队列.数组和堆 ...
- STL源代码学习--vector用法汇总
一.容器vector 使用vector你必须包含头文件<vector>: #include<vector> 型别vector是一个定义于namespace std内的templ ...
- 顺序容器:vector,deque,list
1.顺序容器:vector,deque,list 容器类共享公共接口,只要学会其中一种类型就能运用另一种类型.每种容器提供一组不同的时间和功能这种方案,通常不需要修改代码,秩序改变类型声明,每一种容器 ...
- STL学习:STL库vector、string、set、map用法
本文仅介绍了如何使用它们常用的方法. vector 1.可随机访问,可在尾部插入元素:2.内存自动管理:3.头文件#include <vector> 1.创建vector对象 一维: (1 ...
- Effective STL 学习笔记: 多用 vector & string
Effective STL 学习笔记: 多用 vector & string 如果可能的话, 尽量避免自己去写动态分配的数组,转而使用 vector 和 string . 原书作者唯一想到的一 ...
随机推荐
- 安卓ImageView.src设置图片拉伸、填满控件的方法
代码改变世界 安卓ImageView.src设置图片拉伸.填满控件的方法 需要给你的ImageView布局加上Android:adjustViewBounds="true"
- BZOJ [HNOI2015]亚瑟王 ——期望DP
发现每张卡牌最后起到作用只和是否打出去了有关. 而且每张牌打出去的概率和之前的牌打出去的情况有关. 所以我们按照牌的顺序进行DP. 然后记录$i$张牌中打出$j$张的概率,然后顺便统计答案. 直接对系 ...
- mybatis学习(三)——接口式编程
对于上一节中的查询我们还可以通过接口的方式进行编程,开发环境和上一节一样 1.全局配置文件mybatis_config.xml(和上一节一样) <?xml version="1.0&q ...
- Spring入门之setter DI注入
1.新建Java项目导入依赖jar包,参考前一章 2.以不同文件格式输出为例 3.定义接口IOutputGenerator.java package com.spring.output; public ...
- HDU 4771 BFS + 状压
Stealing Harry Potter's Precious Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 ...
- HDU 5033 Building(北京网络赛B题) 单调栈 找规律
做了三天,,,终于a了... 11724203 2014-09-25 09:37:44 Accepted 5033 781MS 7400K 4751 B G++ czy Building Time L ...
- linux磁盘I/O的性能评估
linux磁盘I/O的性能评估 参考自:自学it网,http://www.zixue.it/. (1)使用iostat命令. [test@localhost /]$ iostat -d Linux - ...
- Netty构建游戏服务器(三)--netty spring简单整合
一,基本方法 上节实现了netty的基本连接,这节加入spring来管理netty,由spring来开启netty服务. 在netty服务器中,我们建立了三个类:HelloServer(程序主入口) ...
- 更改bootstrap的默认样式
很久没用bootstrap,对与按自己的需求修改样式都忘了. 一上来就添加了新的class类,重写css样式让其覆盖原有的样式,实际上不起作用.因为没考虑的选择器的优先级.面试的时候会问到一些这个问题 ...
- NOIP临考经验(转)
[COGS]NOIP临考经验 1. 提前15分钟入场,此时静坐调整心态,适当的深呼吸 2. 打开编辑器并调整为自己喜欢的界面 3. 熟悉文件目录,写好准确无误的代码模板 4. 压缩包或许还不能 ...