目录
-
字符串 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系列