顺序容器
vertor, deque, list, forward_list; 的插入, 删除, 拷贝, 读取, 迭代器
#include <iostream>
#include <cstdlib>
#include <list>
#include <vector>
#include <string>
#include <array>
#include <deque>
#include <forward_list>
int main()
{
//vector;
//不支持push_front 和 emplace_back;
//不支持pop_front删除;
//resize扩展大小; 实质不改变容量中元素的数量, 它仅影响预先分配的内存大小;
std::vector<int> a;
a.push_back(10);
a.push_back(1);
a.push_back(20);
/*
for (auto &i : a)
std::cin >> i;
*/
a.insert(a.begin(), 213); //vertor不支持 push_front 但是可以用insert将元素插入头位置, 只是很耗时;并且insert返回值是插入元素的位置
/*
int i;
std::cin >> i;
a.push_back(i);
*/
auto c = a.begin();
auto c1 = *c;
auto c2 = a.front(); //a中首元素的引用
auto b = a.end(); //迭代end指向最后一位元素后不存在的元素位置
auto b1 = *(--b);
auto &b2 = a.back(); b2 = 10000; //a中尾元素的引用
auto d = a.cbegin();
auto e = a.crbegin();
std::vector<int >::iterator m = a.end();
std::vector<int >::const_iterator q = a.begin();
std::vector<int >::iterator w = a.begin();
a.pop_back(); //删除首元素
a.erase(a.begin() + 1, a.end() - 1); //删除范围元素
a.resize(10); //扩展大小到10;
a.resize(5, 1); //将大小扩展到5, 全部为1, 其他多余的元素删除;
std::cout << "vector : \n";
for (auto i : a)
std::cout << i << " ";
std::cout << '\n' << a.size() << '\n';
for (int i = 0; i < a.size(); i++)
std::cout << a[i] << " ";
a.clear();
//deque;
//与vector相比, 可以将元素插入头位置, push_front;
std::deque<int > a1 = { 1 ,2 ,3 ,4 ,5 ,6 ,7, 8, 9, 10 };
a1.push_back(11);
a1.push_front(12324);
//list;
std::list<std::string > str = { "123", "234", "345" };
std::list<std::string > stri = { "243235", "asd" };
std::list<std::string > str1;
str1.push_front("2423");
str.assign(10, "1"); //用assign初始化10 个 "1";
/*
for (auto &st : str)
std::cin >> st;
*/
str.push_back("12222");
str.push_front("122222"); //list, forward_list, deque还支持 push_front 将元素插入头位置;
std::cout << "\n\n list : \n";
for (auto i : str)
std::cout << i << " ";
//array;
//不支持pop的删除操作
//不支持resize;
std::array<int, 10> ar = { 1, 2, 3, 4, 5 };
std::array<int, 10 > ar0 = { 2, 4, 6, 8, 10, 111 };
std::array <std::string, 10 > ar1;
std::cout << "\n\n array : \n";
for (auto i : ar)
std::cout << i << " ";
//forward_list;
//不支持push_back和emplace_back;
//有专有的insert 和 emplace;
//而forward_list不能递减 即, --;
//不支持pop_back的删除, 有特殊版本的eraser
std::forward_list<std::string > str0 = { "1", "2", "3" };
std::forward_list<std::string > str2(str0);
std::cout << "\n\n forward_list : \n";
for (auto i : str0)
std::cout << i << " ";
//拷贝;
str0.assign(str.begin(), str.end()); //array不能用assign拷贝;
std::array<int, 10 > cpyar = ar;
//交换;
ar.swap(ar0); //array类型数组大小要一样, 将ar与ar0交换;
swap(ar, ar0);
str.swap(stri);
system("pause");
return 0;
}