#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;
}
C++学习之路之容器(deque-双端队列)
最新推荐文章于 2024-09-29 18:03:50 发布