vector 向量容器
2018-03-16 21:39
267 查看
vector是一种简单高效的容器,在尾端插入和删除元素,算法时间度为O(1),其他元素插入和删除为O(n)。vector可动态调整所占用的空间内存。
用数组方式访问vector元素的参考代码如下所示:#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(20); //尾端插入新元素
v.push_back(26);
v.push_back(12);
for(int i=0; i<v.size(); i++)
cout<<v[i]<<' ';
getchar();
return 0;
}用迭代器访问vector的参考代码如下所示:#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
int j;
vector<int>v;
v.push_back(0); //尾端插入元素
v.push_back(1);
//v.clear(); //全部清空元素
v.push_back(2);
v.insert(v.begin()+2,9); //插入9在第二个后面
v.insert(v.begin(),5); //插入5为首元素
v.insert(v.end(),12); //插入12为末元素
v.erase(v.begin()+1); //删除第二个元素
v.erase(v.begin(),v.begin()+2); //删除前三个元素
vector<int>::iterator i; //迭代器,相当于游标
for(i=v.begin(),j=0; i!=v.end(); i++,j++) //迭代器遍历
cout<<"v["<<j<<"]="<<*i<<endl;
swap(v[1],v[2]); //交换
for(i=v.begin(),j=0; i!=v.end(); i++,j++)
cout<<"v["<<j<<"]="<<*i<<endl;
cout<<v.empty()<<endl; //判断是否为空
cout<<v.size()<<endl; //元素实际个数
cout<<v.max_size()<<endl; //可容纳最大元素个数
cout<<v.capacity()<<endl; //当前可容纳的vector元素个数
cout<<v.front()<<endl; //首元素引用
cout<<v.back()<<endl; //末元素引用
v.pop_back(); //删除末尾的一个元素
v.reserve(30); //调整空间数组大小
cout<<v.capacity()<<endl;
vector<int>::reverse_iterator ri; //反向迭代器
for(ri=v.rbegin(); ri!=v.rend(); ri++) //首尾反向
cout<<*ri<<" ";
getchar();
return 0;
}结构体容器参考代码如下:#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std;
struct stu
{
int x;
int y;
};
int main()
{
int j;
vector<stu>v1; //结构体容器
vector<stu>v2;
struct stu a = {1,2};
struct stu b= {2,3};
struct stu c= {4,5};
v1.push_back(a);
v1.push_back(b);
v1.push_back(c);
v2.push_back(c);
v2.push_back(b);
v2.push_back(a);
cout<<"v1:\n";
for(int i=0; i<v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl;
cout<<"v2:\n";
for(int i=0; i<v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl;
swap(v1,v2); //两结构体元素交换
cout<<"v1:\n";
for(int i=0; i<v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl;
cout<<"v2:\n";
for(int i=0; i<v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl;
getchar();
return 0;
}
用数组方式访问vector元素的参考代码如下所示:#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
vector<int> v;
v.push_back(20); //尾端插入新元素
v.push_back(26);
v.push_back(12);
for(int i=0; i<v.size(); i++)
cout<<v[i]<<' ';
getchar();
return 0;
}用迭代器访问vector的参考代码如下所示:#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std;
int main()
{
int j;
vector<int>v;
v.push_back(0); //尾端插入元素
v.push_back(1);
//v.clear(); //全部清空元素
v.push_back(2);
v.insert(v.begin()+2,9); //插入9在第二个后面
v.insert(v.begin(),5); //插入5为首元素
v.insert(v.end(),12); //插入12为末元素
v.erase(v.begin()+1); //删除第二个元素
v.erase(v.begin(),v.begin()+2); //删除前三个元素
vector<int>::iterator i; //迭代器,相当于游标
for(i=v.begin(),j=0; i!=v.end(); i++,j++) //迭代器遍历
cout<<"v["<<j<<"]="<<*i<<endl;
swap(v[1],v[2]); //交换
for(i=v.begin(),j=0; i!=v.end(); i++,j++)
cout<<"v["<<j<<"]="<<*i<<endl;
cout<<v.empty()<<endl; //判断是否为空
cout<<v.size()<<endl; //元素实际个数
cout<<v.max_size()<<endl; //可容纳最大元素个数
cout<<v.capacity()<<endl; //当前可容纳的vector元素个数
cout<<v.front()<<endl; //首元素引用
cout<<v.back()<<endl; //末元素引用
v.pop_back(); //删除末尾的一个元素
v.reserve(30); //调整空间数组大小
cout<<v.capacity()<<endl;
vector<int>::reverse_iterator ri; //反向迭代器
for(ri=v.rbegin(); ri!=v.rend(); ri++) //首尾反向
cout<<*ri<<" ";
getchar();
return 0;
}结构体容器参考代码如下:#include<iostream>
#include<vector>
#include<stdio.h>
using namespace std;
struct stu
{
int x;
int y;
};
int main()
{
int j;
vector<stu>v1; //结构体容器
vector<stu>v2;
struct stu a = {1,2};
struct stu b= {2,3};
struct stu c= {4,5};
v1.push_back(a);
v1.push_back(b);
v1.push_back(c);
v2.push_back(c);
v2.push_back(b);
v2.push_back(a);
cout<<"v1:\n";
for(int i=0; i<v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl;
cout<<"v2:\n";
for(int i=0; i<v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl;
swap(v1,v2); //两结构体元素交换
cout<<"v1:\n";
for(int i=0; i<v1.size(); i++)
cout<<v1[i].x<<" "<<v1[i].y<<endl;
cout<<"v2:\n";
for(int i=0; i<v2.size(); i++)
cout<<v2[i].x<<" "<<v2[i].y<<endl;
getchar();
return 0;
}
相关文章推荐
- vector向量容器——STL Introduction
- C++向量容器vector的使用
- C++ STL--vector向量容器学习笔记
- vector向量容器的删除
- vector向量容器
- 利用copy函数简单快速输出/保存vector向量容器中的数据
- 第6章 vector向量容器
- bit_vector位向量容器
- C++ STL入门教程(1)——vector(向量容器)的使用(附完整程序代码)
- vector向量容器元素排序与查找
- STL向量容器vector
- 【C++】STL常用容器总结之三:向量vector
- vector向量容器中使用insert()方法
- 向量容器vector模板
- vector向量容器元素排序与查找
- 向量容器vector
- C++STL泛型编程——vector向量容器
- 学习笔记之vector向量容器
- C++ STL中vector(向量容器)使用简单介绍
- C++ STL入门教程(1)——vector(向量容器)的使用(附完整程序代码)