1-vector.cpp
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
vector<int> v1; //创建数组对象(模板类) 无参构造函数
vector<int> v2(data, data + 10); //左闭右开 有参构造函数
vector<int> v3(10, 1);
v1.resize(10); //扩充容量
for (int i = 0; i < v1.size(); i++)
{
v1[i] = i; //重载了下标运算符
}
for (int i = 0; i < v2.size(); i++)
{
cout << v2.at(i) << " ";
}
cout << endl;
//正向迭代器
//for (vector<int>::iterator it = v3.begin(); it != v3.end(); it++)
for (vector<int>::iterator it = v3.begin(); it != v3.end(); it = it + 2)
{
cout << *it << " ";
}
cout << endl;
//反向迭代器
for (vector<int>::reverse_iterator rit = v2.rbegin(); rit != v2.rend(); rit++)
{
cout << *rit << " ";
}
cout << endl;
//只读迭代器
for (vector<int>::const_iterator cit = v2.begin(); cit != v2.end(); cit++)
{
//(*cit)++; //只能访问不能修改
cout << *cit << " ";
}
cout << endl;
return 0;
}
2-vector插入删除.cpp
#include <iostream>
#include <string.h>
#include <vector>
using namespace std;
int main()
{
const char *str = "this is ";
const char *s = "helloworld";
vector<char> v(s, s + strlen(s));
for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it;
}
cout << endl;
v.insert(v.begin(), 'x');
for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it;
}
cout << endl;
v.insert(v.end(), 5, 'x');
for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it;
}
cout << endl;
v.insert(v.begin(), str, str + strlen(str));
for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it;
}
cout << endl;
v.erase(v.end() - 5, v.end());
for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it;
}
cout << endl;
v.erase(v.begin() + 8);
for (vector<char>::iterator it = v.begin(); it != v.end(); it++)
{
cout << *it;
}
cout << endl;
return 0;
}
3-deque.cpp
#include <deque>
#include <iostream>
using namespace std;
int main()
{
int data[5] = {1, 2, 3, 4, 5};
deque<int> d1;
deque<int> d2(data, data + 5);
deque<int> d3(10, 1);
for (deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
{
cout << *it << " ";
}
cout << endl;
d2.push_back(6); //结尾添加元素
d2.push_front(0); //开头添加元素
for (deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
{
cout << *it << " ";
}
cout << endl;
d2.pop_back();
d2.pop_front();
for (deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
{
cout << *it << " ";
}
cout << endl;
d2.front() = 1000;
d2.back() = 1000;
for (deque<int>::iterator it = d2.begin(); it != d2.end(); it++)
{
cout << *it << " ";
}
cout << endl;
deque<int>::iterator it = d2.erase(d2.begin()); //返回下一个元素的位置
cout << *it << endl;
return 0;
}
4-deque删除.cpp
#include <iostream>
#include <deque>
using namespace std;
int main()
{
int data[10] = {2, 1, 3, 3, 4, 9, 0, 7, 3, 3};
deque<int> d(data, data + 10);
for (deque<int>::iterator it = d.begin(); it != d.end();)
{
if (*it == 3)
{
it = d.erase(it);
}
else
{
it++;
}
}
for (deque<int>::iterator it = d.begin(); it != d.end(); it++)
{
cout << *it << " " ;
}
cout << endl;
return 0;
}

本文详细探讨了Linux系统中C++的两种重要容器——vector和deque,通过实例代码vector.cpp和vector插入删除.cpp展示了vector的使用及元素操作,接着在deque.cpp和deque删除.cpp中讲解了deque的特性及其元素管理。

2671

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



