C++ 常用容器成员函数用法总结

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 可以容纳的字符数,至少
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值