C++容器基本操作整理

一、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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值