C++ 常用容器成员函数用法总结
简介
包括以下容器
array <int, 10> a; ~~~~~~~~~~~~~~~~~//# include <array>
string str; ~~~~~~~~~~~~~~~~~~~~~~~~//# include <string>
vector <int> v; ~~~~~~~~~~~~~~~~~~~~//# include <vector>
deque <int> dv; ~~~~~~~~~~~~~~~~~~~~//# include <deque>
list <int> l; ~~~~~~~~~~~~~~~~~~~~~~//# include <list>
forward_list <int> fl; ~~~~~~~~~~~~~//# include <forward_list>
pair <int, int> p; ~~~~~~~~~~~~~~~~~//# include <utility>
set <int> s; ~~~~~~~~~~~~~~~~~~~~~~~//# include <set>
multiset <int> ms;~~~~~~~~~~~~~~~~~~//# include <set>
map <int, int> m;~~~~~~~~~~~~~~~~~~~//# include <map>
multimap <int, int>mm;~~~~~~~~~~~~~~//# include <map>
unordered_set <int> us;~~~~~~~~~~~~~//# include <unorder_set>
unordered_multiset <int> ums;~~~~~~~//# include <unorder_set>
unordered_map <int, int> um;~~~~~~~~//# include <unorder_map>
unordered_multimap <int, int> umm;~~//# include <unorder_map>
stack <int> st; ~~~~~~~~~~~~~~~~~~~~//# include <stack>
queue <int> q; ~~~~~~~~~~~~~~~~~~~~~//# include <queue>
priority_queue <int> pq;~~~~~~~~~~~~//# include <queue>
点击前往: array 用法详解
点击前往: string 用法详解
点击前往: vector 用法详解
点击前往: deque 用法详解
点击前往: list 用法详解
点击前往: forward_list 用法详解
点击前往: pair 用法详解
点击前往: set/multiset 用法详解
点击前往: map/multimap 用法详解
点击前往: unordered_x 用法详解
点击前往: stack 用法详解
点击前往: queue 用法详解
点击前往: priority_queue 用法详解
迭代器
分为:
begin / end
rbegin / rend
cbegin / cend
crbegin / crend
before_begin
cbefore_begin
使用方法
auto it = x.begin();//用 *it 访问\
简介
x.begin(); 返回迭代器, 指向第一元素
x.end(); 返回迭代器, 指向最末元素的下一个位置
x.cbegin(); 返回迭代器, 指向第一元素, 类型为const
x.rbegin(); 返回反向迭代器, 指向反向迭代的第一元素
x.rend(); 返回反向迭代器, 指向反向迭代的最末元素的下一个位置
x.crbegin(); 返回反向迭代器, 指向反向迭代的第一元素, 类型为const
x.before_begin(); 返回迭代器, 指向第一元素的前一个位置
begin和rbegin的区别
x.begin()返回迭代器,指向容器内的第一元素
x.rbegin()返回逆序迭代器,指向容器内的最后一个元素
x.begin(),x.begin()+1,···,x.end()-1,x.end()
x.rbegin(),x.rbegin()+1,···,x.rend()-1,x.rend()
begin和cbegin的区别
可以通过x.begin()修改容器内元素的值
不能通过x.cbegin()修改容器内元素的值
array: 静态数组
简介
头文件: # include < array >
是 C++ 为了解决 C 风格数组的问题而提供的静态数组容器, 大小设置之后固定不变, 通常比 C 风格的数组更轻、更有效、更可靠
与C风格数组的区别
只是比C风格数组多了几个容器的成员函数, 其他用法大致相同
构造函数
array <int, 9> a, a1;//定义具有 9 个 int 型元素的数组
array <char, 9> ach;//定义具有 9 个 char 型元素的数组
array <string, 9> astr;//定义具有 9 个 string 型元素数组
array <array<int, 9>, 9 > aa;//定义二维 int 类型的数组
array <int, 9> a2{
1,2,3,4 };//定义新容器, 将 {1,2,3,4} 作为初值
array <int, 9> a3 = {
1,2,3,4 };//同上
array <int, 9> a4(a);//定义新容器 a4, 拷贝 a 所有的元素
array <int, 9> a5 = a;//同上
访问 / 赋值
迭代器
包括:begin、end、rbegin、rend、cbegin、cend、crbegin、crend
下标 / at
支持下标 [] 和 at 函数随机访问容器内元素
a[id]; 返回下标为 id 的元素, 不检查是否越界
a.at(id); 返回下标为 id 的元素, 如果越界抛出异常
批量赋值
a.assign(3);//将容器的每个元素都赋值成 3
a.fill(4);//将容器的每个元素都赋值成 4
swap (交换函数)
a.swap(a1);//交换两个容器的内容
常用函数
a.front();//返回第一元素
a.back();//返回最末元素
a.empty();//容器为空返回true, 否则返回 false
长度/空间/容量相关函数
a.size();//返回容器内目前的元素个数
a.max_size();//返回元素个数 size 的最大值
注: 由于array 是静态数组, 因此这里的 size 和 max_size 相同
string:字符串
简介
头文件: # include < string >
一个专门存储和处理字符类型的容器, 具有强大的功能
构造函数
string str, str1;
string str2("abcde");//定义新容器, 将 “abcde” 作为初值
string str3 = "abcde";//同上
string str4{
"abcde" };//同上
string str5 = {
"abcde" };//同上
string str6{
'a','b','c','d','e' };//同上
string str7(6, 's');//定义新容器, 将 6 个 ‘s’ 作为初值
string str8(str);//定义新容器 str8, 拷贝 str 所有的元素
string str9 = str;//同上
string str10(str, 2);//定义新容器 str10, 拷贝 str[2]~str[n-1]
string str11(str, 2, 3);// 定义新容器 str11, 拷贝 str[2]~str[2+3-1]
string str12(str.begin(), str.end());//定义新容器 str2, 拷贝区间内元素
访问 / 赋值
迭代器
包括:begin、end、rbegin、rend、cbegin、cend、crbegin、crend
下标 / at
支持下标 [] 和 at 函数随机访问容器内字符
str[id]; 返回下标为 id 的字符, 不检查是否越界
str.at(id); 返回下标为 id 的字符, 如果越界抛出异常
assign (赋值函数)
str.assign(6, 's');//将 6 个 ‘s’ 赋值给 str
str.assign(str1);//将 str1 赋值给 str
str.assign(str1, 2);//将 str1[2]~str1[n-1] 赋值给 str
str.assign(str1, 2, 3);//将 str1[2]~str1[2+3-1] 赋值给 str
str.assign(str1.begin(), str1.end());//将区间内的元素赋值给 str
连接符
+和 +=:连接字符串
=:字符串赋值
>、>=、< 和 <=:字符串比较 (例如a < b)
==、!=:比较字符串
<<、>>:输出、输入字符串
例: str += str1;// 在 str 末尾添加 str1
swap (交换函数)
str.swap(str1);// 交换两个容器的内容
常用函数
str.push_back('s');//在末尾添加字符 ‘s’
str.pop_back();//删除最后一个元素
str.front();//返回第一元素
str.back();//返回最末元素
str.clear();//清空容器
str.empty();//容器为空返回true, 否则返回 false
长度 / 空间 / 容量相关函数
str.length();//返回字符串 str 的长度
str.size();//返回容器内目前的元素个数
str.max_size();//返回元素个数 size 的最大值
str.resize(3);//设置 size,只影响 size,设置之后 size=3,若尺寸变小, 多余部分截掉
str.resize(3, 's');//设置 size, 如果尺寸变大,新空间全部用 ‘s’ 代替
str.capacity();//返回重新分配内存前 str 可以容纳的字符数,至少