C++学习之路之容器(deque-双端队列)

#include <iostream>
#include <string>
#include <deque>
using namespace std;

int main(int argc, const char** argv){
    //1.构造函数
    deque<string> data(10,"a");//:创建一个vector,元素个数为10,且值均为1
    deque<string> num1(data);//复制构造函数
    deque<string> num2(data.begin(),data.end()-5);//复制构造函数
    deque<string> num3;//创建一个空vector
    deque<string> num4(10);//创建一个vector,元素个数为10
    cout << "构造函数 :size "<<data.size() << "empty" << data.empty()<< endl;

    //2.增加函数
    data.push_back("b");//向量尾部增加一个元素X
    data.insert(data.end()-1,"3");//向量中迭代器指向元素前增加一个元素3   
    data.insert(data.end()-1,3,"4");//向量中迭代器指向元素前增加3个相同的元素4
    data.insert(data.end()-1,num1.begin(),num1.end());//向量中迭代器指向元素前增加3个相同的元素4
    data.push_front("a");  //行前面添加一个元素        *********************
    //与vector不同的是

    //删除元素
    data.erase(data.end()-1);//删除向量中迭代器指向元素
    data.erase(data.begin(),data.end()-5);//删除从第一个元素到倒数第二个元素
    data.pop_back();//删除向量中最后一个元素
    data.pop_front();// 移除第一个元素          *********************
    // data.clear();//清空向量中所有元素

    //访问某个元素
    string a = data.at(1);//读取索引为1的元素
    string a0 = data[1];//读取第2个元素
    string a1 = data.front();//:返回首元素的引用
    string a2 = data.back();//返回尾元素的引用


    //迭代器
    deque<string>::iterator item_begin = data.begin();
    deque<string>::iterator item_end = data.end();
    deque<string>::const_iterator item_cbegin = data.cbegin();//修饰const的vector
    deque<string>::const_iterator item_cend = data.cend();     //修饰const的vector
    deque<string>::reverse_iterator item_rbegin = data.rbegin();  //反向迭代器
    deque<string>::reverse_iterator item_rend = data.rend();       //反向迭代器
    deque<string>::const_reverse_iterator item_rcbegin = data.crbegin();  //反向迭代器  修饰const的vector
    deque<string>::const_reverse_iterator item_rcend = data.crend();       //反向迭代器 修饰const的vector

    //容量
    data.empty();//检查容器是否为空
    int num = data.size();//返回容纳的元素数
    int num_1 = data.max_size();//返回可容纳的最大元素数

    data.resize(200);//改变容器中可存储元素的个数
    data.shrink_to_fit();//通过释放未使用的内存减少内存的使用


    //修改器
    data.assign(2,"5");//​设置向量中前2个元素的值为5,并删除其他元素 
    data.assign(data.begin(),data.end());//只保留区间的元素


    //迭代
    deque<string>::iterator item = data.begin();
    for(item ; item!=data.end();*item++){
        cout << "iterator item:"<< *item << endl;
    }
    for(size_t i = 0 ; i<data.size();i++){
        cout << "size item:"<< data[i] << endl;
    }
    for(auto& it:data){
        cout << "auto& data:"<< it << endl;
    }
    for(auto it:data){
        cout << "auto data:"<< it << "   "<<data.size()<< endl;
    }

    //8.算法
    data.swap(num1);//交换两个同类型向量的数据
    return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值