2021-03-01

目录

字符串 string

动态数组 vector

栈 stack

集合 set


  •  字符串 string

#include<cstring>      头文件
string s;              基本定义

c_str()

string s="123";
printf("%s",s.c_str());

查询

getline(cin,s);        读一行
s.size(); s.length();  容量
s.empty();             是否为空 是否为空 空则返回true,非空则返回false
s.clear();             清空

截取 

语法
basic_string substr( size_type index, size_type num = npos );
返回本字符串的一个子串,从index开始,长num个字符
如果没有指定,将是默认值 string::npos
这样,substr()函数将简单的返回从index开始的剩余的字符串

s.substr(4);        截取从下标4到结尾的所有字符
s.substr(4,3);      截取从下标4开始的3个字符
仅支持下标访问 不支持迭代器访问

插入

iterator insert( iterator i, const char &ch );
basic_string &insert( size_type index, const basic_string &str );
basic_string &insert( size_type index, const char *str );
basic_string &insert( size_type index1, const basic_string &str, size_type index2, size_type num );
basic_string &insert( size_type index, const char *str, size_type num );
basic_string &insert( size_type index, size_type num, char ch );
void insert( iterator i, size_type num, const char &ch );
void insert( iterator i, iterator start, iterator end );
在迭代器i表示的位置前面插入一个字符ch, 
在字符串的位置index插入字符串str, 
在字符串的位置index插入字符串str的子串(从index2开始,长num个字符), 
在字符串的位置index插入字符串str的num个字符, 
在字符串的位置index插入num个字符ch的拷贝, 
在迭代器i表示的位置前面插入num个字符ch的拷贝, 
在迭代器i表示的位置前面插入一段字符,从start开始,以end结束. 

/*s.insert(4,'');               在下标为4的位置前插入字符*/
s.insert(s.begin()+4,'');       同上 支持迭代器访问

s.insert(3,4,'');               在下标为3的位置前插入4个字符
s.insert(s.begin()+3,4,'');     同上 支持迭代器访问

s.push_back('');                在末尾插入字符

删除

iterator erase( iterator pos );
iterator erase( iterator start, iterator end );
basic_string &erase( size_type index = 0, size_type num = npos );

删除pos指向的字符, 返回指向下一个字符的迭代器, 
删除从start到end的所有字符, 返回一个迭代器,指向被删除的最后一个字符的下一个位置 
删除从index索引开始的num个字符, 返回*this. 

s.erase(1,3);                    删除下标1开始的3个字符
s.erase(5);                      删除下标从5开始到结尾的所有字符(保留前i个字符)
s.erase(s.begin()+5);            删除下标为5的字符
s.erase(s.begin()+i,s.end()-j);  删除[L,R)区间上的所有字符(保留前i个和后j个字符)

查找

语法
size_type find( const basic_string &str, size_type index );
size_type find( const char *str, size_type index );
size_type find( const char *str, size_type index, size_type length );
size_type find( char ch, size_type index );
返回str在字符串中第一次出现的位置(从index开始查找)。如果没找到则返回string::npos, 
返回str在字符串中第一次出现的位置(从index开始查找,长度为length)。如果没找到就返回string::npos, 
返回字符ch在字符串中第一次出现的位置(从index开始查找)。如果没找到就返回string::npos 
s.find("");        正序查找 返回首字符的下标
s.find("",6); 	   正序查找 从下标为6开始找 返回首字符的下标
s.rfind("");       倒序查找 返回首字符的下标



size_type find_first_of( const basic_string &str, size_type index = 0 );
size_type find_first_of( const char *str, size_type index = 0 );
size_type find_first_of( const char *str, size_type index, size_type num );
size_type find_first_of( char ch, size_type index = 0 );
查找在字符串中第一个与str中的某个字符匹配的字符,返回它的位置。搜索从index开始,如果没找到就返回string::npos 
查找在字符串中第一个与str中的某个字符匹配的字符,返回它的位置。搜索从index开始,最多搜索num个字符。如果没找到就返回string::npos, 
查找在字符串中第一个与ch匹配的字符,返回它的位置。搜索从index开始。 



size_type find_first_not_of( const basic_string &str, size_type index = 0 );
size_type find_first_not_of( const char *str, size_type index = 0 );
size_type find_first_not_of( const char *str, size_type index, size_type num );
size_type find_first_not_of( char ch, size_type index = 0 );
在字符串中查找第一个与str中的字符都不匹配的字符,返回它的位置。搜索从index开始。如果没找到就返回string::nops 
在字符串中查找第一个与str中的字符都不匹配的字符,返回它的位置。搜索从index开始,最多查找num个字符。如果没找到就返回string::nops 
在字符串中查找第一个与ch不匹配的字符,返回它的位置。搜索从index开始。如果没找到就返回string::nops



size_type find_last_of( const basic_string &str, size_type index = npos );
size_type find_last_of( const char *str, size_type index = npos );
size_type find_last_of( const char *str, size_type index, size_type num );
size_type find_last_of( char ch, size_type index = npos );
在字符串中查找最后一个与str中的某个字符匹配的字符,返回它的位置。搜索从index开始。如果没找到就返回string::nops 
在字符串中查找最后一个与str中的某个字符匹配的字符,返回它的位置。搜索从index开始,最多搜索num个字符。如果没找到就返回string::nops 
在字符串中查找最后一个与ch匹配的字符,返回它的位置。搜索从index开始。如果没找到就返回string::nops



size_type find_last_not_of( const basic_string &str, size_type index = npos );
size_type find_last_not_of( const char *str, size_type index = npos);
size_type find_last_not_of( const char *str, size_type index, size_type num );
size_type find_last_not_of( char ch, size_type index = npos );
在字符串中查找最后一个与str中的字符都不匹配的字符,返回它的位置。搜索从index开始。如果没找到就返回string::nops 
在字符串中查找最后一个与str中的字符都不匹配的字符,返回它的位置。搜索从index开始,最多查找num个字符如果没找到就返回string::nops 
在字符串中查找最后一个与ch不匹配的字符,返回它的位置。搜索从index开始。如果没找到就返回string::nops 

小技巧

s.erase(0,s.find_first_not_of('0')); //删除前导0

 

  •  动态数组 vector

#include<vector>        头文件
vector<int> v1;         基本定义

定义

vector<int> v1;
vector<int> v1(10);     定义⻓度为10的int数组,初始值全为0
vector<int> v1(10,9);   定义⻓度为10的int数组,初始值全为9

查询

v1.size();     容量
v1.empty();    是否为空 空则返回true,非空则返回false
v1.front();    返回第一个元素
v1.back();     返回最后一个元素

插入

语法
iterator insert( iterator loc, const TYPE &val );
void insert( iterator loc, size_type num, const TYPE &val );
void insert( iterator loc, input_iterator start, input_iterator end );
在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, 
在指定位置loc前插入num个值为val的元素 
在指定位置loc前插入区间[start, end)的所有元素

v1.push_back();              插入元素到末尾
v1.insert(v1.begin()+1,5);   在下标为1的位置插入数值5
v1.insert(v1.begin()+1,3,5); 在下标为1的位置插入3个5

删除

语法
iterator erase( iterator loc );
iterator erase( iterator start, iterator end );
删作指定位置loc的元素.
删除区间[start, end)的所有元素.返回值是指向删除的最后一个元素的下一位置的迭代器.

v1.erase(v1.begin()+1);              删除下标为1的元素 空位由后向前补齐
v1.erase(v1.begin()+i,v1.end()-j);   删除[L,R)区间上的所有字符(保留前i个和后j个字符)
v1.clear();                          清空
v1.pop_back();                       删除末尾元素

 


  •  栈 stack

定义

#include<stack> //头文件
stack<int> s;   //基本定义

查询

s.empty() 栈是否为空 空则返回true,非空则返回false
s.size()  返回栈中的元素数量
s.top()   返回栈顶元素

插入和删除

s.push();   添加元素到栈顶
s.pop();    移除栈顶的元素

  • 集合 set 

定义

#include<set> //头文件
set<int> s;   //基本定义
set中的元素是自动排序(默认升序)的
set<int, greater<int>> s;
set中的元素唯一,没有重复

查询 

s.count();          返回某个值元素的个数 set只有0和1
s.empty();          集合为空则返回true 否则返回false
s.size();           集合中元素的数目
s.lower_bound();    返回指向大于(或等于)某值的第一个元素的迭代器
s.upper_bound();    返回大于某个值元素的迭代器

插入

语法
iterator insert( iterator i, const TYPE &val );
void insert( input_iterator start, input_iterator end );
pair insert( const TYPE &val );
在迭代器i前插入val;
将迭代器start开始到end结束返回内的元素插入到集合中;
在当前集合中插入val元素,并返回指向该元素的迭代器和一个布尔值来说明
val是否成功的被插入了。(应该注意的是在集合(Sets)中不能插入两个相同的元素。)

删除

语法
void erase( iterator i );
void erase( iterator start, iterator end );
size_type erase( const key_type &key );
删除i元素;
删除从start开始到end结束的元素;
删除等于key值的所有元素(返回被删除的元素的个数)。

s.clear(); 清空所有元素

查找

iterator find( const key_type &key );
在当前集合中查找等于key值的元素,并返回指向该元素的迭代器
如果没有找到,返回指向集合最后一个元素的迭代器。

  •  字符串 string

基本操作


  •  字符串 string

基本操作


  •  字符串 string

基本操作


  •  字符串 string

基本操作


  •  字符串 string

基本操作


  •  字符串 string

基本操作


  •  字符串 string

基本操作


  •  字符串 string

基本操作


  •  字符串 string

基本操作



  • 队列 queue

  • 两端队列 deque

  • 优先队列 priority_queue

  • 栈 stack

  • 链表 list

  • set系列

  • map系列

- ### map / multimap / unordered_map / unordered_multimap
- ### set / multiset / unordered_set / unordered_multiset
- ### bitset

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值