【C++】【STL】

 

C++必不可少环节之STL,本篇作为系统性学习笔记,详细教程可访问http://c.biancheng.net/stl/

容器

array<T , N>

包含N个T的固定序列,相当于标准数组。

容器创建:std::array<int, 5> data {1, 2, 3, 4, 5};

元素访问:①索引值 data[i]   ②成员函数 data.at(i)   第二种可以检查索引值是否越界,越界会抛出异常,但检查越界存在性能开销

首元素:①std::begin(data)   ②data.front() 引用类型

末元素:①std::end(date)     ②data.back() 引用类型

元素个数:data.size()

容器遍历:for ( auto&&  value : data )

vector<T>

包含T的非固定序列,容器大小可调节,只可添加删除未元素

容器创建:std::vector<int> data(n , i)   添加 n 个元素并设定初始值为 i 

元素访问:data[i]

首末元素:同array

申请内存:data.reserve(i)   内存分配 i 个元素容量,若当前容量>= i , 当作啥也没发生,reserve不影响现有元素

元素个数:data.size()

当前容量:data.capacity()   元素个数<容量 元素个数爆满时,容器根据不同算法会进行自动扩容 

容量调整:data.resize(n, i)   可用于扩充,也可裁切,扩充时 i 作为新增元素默认值 

容器遍历:for(iter = data.begin() ; iter != data.end() ; iter++) cout<<*iter

添加元素:①data.push_back(i)   ②data.emplace_back(i) 第二种会使用它的参数作为构造函数的参数

插入元素:①data.inset(std::end(data) , i)   ②data.emplace(++std::begin(data) , i)

插入示例:

std::vector<std::string> words {"first" , "second"};
auto iter = words.emplace(++std::begin(words), 5, 'A');
words.emplace(++iter, "BBB");

//输出结果 "first" "AAAAA" "BBB" "second"

删除元素:①data.clear()删除所有元素   ②data.pop_back()删除末元素   ③data.erase(std::begin(data)+1) , std::begin(data)+3)删                   除指定范围元素

deque<T>

以双端队列形式组织元素,相较于vector,可高效在首尾增删元素,且元素个数等于容量。

容器创建:std::deque<int> data

元素访问:①索引值 data[i]   ②成员函数 data.at(i)

添加元素:见示例

std::deque<int> numbers {2, 3, 4};
numbers.push_front(11);    // 11 2 3 4
numbers.push_back(12);     // 11 2 3 4 12
numbers.pop_front();       // 2 3 4 12

修改元素:

list<T>

map

set

未完待续...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值