vector遍历:
类C遍历,按插入顺序
vector<int> a = {1,2,3,4,5};
for(int i=0;i<a.size();i++) printf("%d%s",a[i],i==a.size()-1?"\n":" ");
迭代器遍历
vector<int> a = {1,2,3,4,5};
for(vector<int>::iterator p=a.begin();p!=a.end();p++) printf("%d%s",*p,p==a.end()-1?"\n":" ");
类const迭代器访问,不可对原始vector进行修改
vector<int> a = {1,2,3,4,5};
for(auto p = a.cbegin();p!=a.cend();p++) printf("%d%s",*p,p==a.cend()-1?"\n":" ");
自适应指针遍历,结尾会多一个空格
vector<int> a = {1,2,3,4,5};
for(auto p:a) printf("%d ",p);
vector拷贝
int型vector
声明时拷贝,深拷贝
vector<int> a = {1,2,3,4,5};
vector<int> b(a);
a.clear();
for(auto p:b) printf("%d ",p);
赋值拷贝,深拷贝
vector<int> a = {1,2,3,4,5};
vector<int> b;
b = a;
a.clear();
for(auto p:b) printf("%d ",p);
assign分配,深拷贝
vector<int> a = {1,2,3,4,5};
vector<int> b;
b.assign(a.cbegin(), a.cend());
a.clear();
for(auto p:b) printf("%d ",p);
追加插入,深拷贝
vector<int> a = {1,2,3,4,5};
vector<int> b;
b.insert(b.cend(),a.cbegin(), a.cend());
a.clear();
for(auto p:b) printf("%d ",p);
struct型vector
声明时拷贝,深拷贝
struct Node{
int n;
Node(int nn){n = nn;}
};
vector<Node> a;
for(int i=1;i<=5;i++) a.push_back(Node(i));
vector<Node> b(a);
a.clear();
for(auto p:b) printf("%d ",p.n);
赋值拷贝,深拷贝
struct Node{
int n;
Node(int nn){n = nn;}
};
vector<Node> a;
for(int i=1;i<=5;i++) a.push_back(Node(i));
vector<Node> b = a;
a.clear();
for(auto p:b) printf("%d ",p.n);
vector插入
插入单个数据:
vector<int> a = {1,2,3,4,5};
a.insert(a.cbegin(),0);
for(auto t:a) printf("%d ",t); //输出0 1 2 3 4 5
插入重复的单个数据:
vector<int> a = {1,2,3,4,5};
a.insert(a.cbegin(),2,0);
for(auto t:a) printf("%d ",t); //输出0 0 1 2 3 4 5
插入一个数组:
vector<int> a = {1,2,3,4,5};
vector<int> b = {6,7};
a.insert(a.cbegin(),b.cbegin(),b.cbegin()+1);
for(auto t:a) printf("%d ",t); //输出6 1 2 3 4 5