欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++容器

程序员文章站 2022-06-16 22:50:01
...

采用C++语言刷leetcode时,发现各种容器不会用,题目还没开始刷就凉了。。。特写本文巩固总结各种容器的使用。

一、String——字符串容器

构造方法

构造空字符串 String()
通过cstring构造 String("hello,world")
通过cstring的子串构造 String("hello,world", 3, 8)

修改

附加 +=或者str.append()
添加字符 str.push_back(char ch)
赋值 str = str2
插入string str.insert(int pos, str2)
删除最后的字符 str.pop_back()

二、vector——向量容器

属性

属性 解释
size() 大小
empty() 返回0或1

创建vector

方式 备注
vector<int> a(10); 指定长度
vector<int> a(10, 1); 指定长度和初始值
vector<int> a(b.begin(), b.end());
vector<int> a(b);
用其余向量
vector<int> a(arr, arr + sizeof(arr)/sizeof(int)); 用一个整型数组

访问

1. 遍历

用下标

for(unsigned i=0; i<e.size();i++){
  cout<<e[i]<<" ";
}

用迭代器

for(vector<int>::iterator it = c.begin(); it!=c.end(); ++it){
  cout<<*it<<endl;
}

2. 获取

a[index];  //超出index range取出乱值
a.at(index);  //超出index range报错

a.front();
a.back();

修改

  1. 尾部插入或删除值
a.push_back();
a.pop_back();
  1. 指定位置插入
//insert(start_position, value)
a.insert(a.begin(), 5);
//insert(start_position, amount, value)
a.insert(a.begin(), 3, 5);
//insert(start_position, vec_start_position, vec_end_position)
a.insert(a.begin(), b.begin(), b.begin()+3);