一、Vector容器
二、List容器
三、Queue容器
四、set容器
五、map容器
1:Vector容器:
赋值操作:
vector<T> a(b); //a中元素赋值为b
vector<T> a(b,n) //a中元素赋值为n个b
vector<T> a{b1,b2,b3} //a中元素赋值为b1,b2,b3
常用基本操作:
vector<T> a;
a.empty() //判断数组是否为空,True为空
a.size() //返回数组长度
a.push_back() //弹出尾元素,数组没有a.push_front();
a.pop_back()
a.back() //返回尾元素对应值,不弹出
a.front() //返回首元素对应值,不弹出
迭代器相关操作:
vector<T> a;
vector<T>::iterator it = a.begin(); //生成迭代器,多数vector<T>::iterator直接用auto
/*查询操作*/
while(it!=a.end())
{
cout << it << endl;
}
/*插入操作*/
a.insert(a.begin(),n,val) //如a.insert(it.begin(),2,4)在a开头插入2个4
a.insert(a.begin(),{k1,k2,k3}) //在a开头插入k1,k2,k3
a.insert(a.begin(),b.begin(),b.end()) //在a开头插入b的全部
/*删除操作*/
a.erase(a.begin()) //删除第一个元素
a.erase(a.begin(),a.begin()+3) //删除第一个到第三个元素
a.erase(remove_if(a.begin(),a.end(),()[T x]{return x = 3}),a.end)
// remove 是将元素移到末尾,返回最后一个有‘用’元素,然后用容器自带的erase进行删除操作。
a.erase(unique(a.begin,a.end),a.end()); //删除重复元素
/*查找操作*/
a.find(a.begin(),a.end(),k) //查到对应k值,返回对应迭代器
/*转置操作*/
reverse(a.begin(),a.end()) //转置a
/*内存分配操作*/
a.capacity() //系统自动分配内存,会大一点
a.size() //数据自动占据内存
a.reserve(n) //预分配n个内存
插入返回插入的第一个元素迭代器,删除返回删除后的第一个元素迭代器
2.List容器
赋值操作种类与Vector相同。
常用基本操作:
/*因为其是双向链表,增加了一些操作*/
list<T> a;
/*开始和结尾值区别*/
a.rbegin() //右开始的默认迭代器
a.rend() //右结束的默认迭代器
a.cbegin() //加const的迭代器,不能修改
a.cend()
/*增加和删除值区别*/
a.push_front(b) //开头加值
a.pop_front()
3.queue容器
基本操作改动:
queue<T> a;
a.push();
a.pop();
4.Set容器
set<T> a;
set<T> b;
b.swap(a); //交换a与b的值
pair<set<T, T>::iterator, bool> ret = a.emplace("aaaaa"); //直接插入,不需要排序 C++11 新增插入项,返回一组值,第一个是迭代器,第二个是判断是否插入成功的判断值。emplace_hint有所区别
auto it = a.emplace_hint(a.begin(),"aaaaa"); //有了存放位置,返回指向新添加元素的迭代器
a.count(k); //计算k在a中出现的次数。
5.Map容器
插入数据时有些区别:
unordered_map<T1,T2> a;
/*插入数据*/
a.insert({"1","2"});
a.insert(map<T1, T2>::value_type(0,1));
a[0]=1;
/*查找操作*/
find(value)->first;
find(key)->second;

6430

被折叠的 条评论
为什么被折叠?



