作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。
特别注意:
使用vector需要注意以下几点:
1、如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低;
2、Vector作为函数的参数或者返回值时,需要注意它的写法:
double Distance(vector<int>&a, vector<int>&b) 其中的“&”绝对不能少!!!
原文:https://blog.csdn.net/duan19920101/article/details/50617190
vector中可以存基本类型,也可以存储类对象,数组等。
代码实现:
vector<int> vec;
for(int i=0;i<10;i++)
{
vec.push_back(i);
}
vec.insert(vec.begin()+1,5);//在下标为1的位置插入5,其余元素向后移动
vector<int>::iterator it;
for(it = vec.begin();it != vec.end();it++)//使用迭代器输出
{
cout<<*it;
}
cout<<endl;
vec.erase(vec.begin()+1);
for(it = vec.begin();it != vec.end();it++)
{
cout<<*it;
}
cout<<endl;
reverse(vec.begin(),vec.end());
for(it = vec.begin();it != vec.end();it++)
{
cout<<*it;
}
cout<<endl;
for(int i=0;i<vec.size();i++)//使用循环输出
{
cout<<vec[i];
}
在vector中reverse(vec.begin(),vec.end());可以全部翻转,也可以局部翻转
reverse(vec.begin()+2,vec.end()-3);//只要注意使用范围就可以。
定义一个二维动态数组u,实现乘法口诀。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
int arr[10][10]={0};
for(int i=1;i<10;i++)
{
for(int j=1;j<10;j++)
{
arr[i][j]=i*j;
if(i>=j)
cout<<i<<"*"<<j<<"="<<arr[i][j]<<" ";
}
cout<<endl;
}
vector<vector <int> > array(10,vector<int>(0));//vector的二维数组
for(int i=1;i<10;i++)
{
for(int j=0;j<9;j++)
{
array[i].push_back(i*j);
}
}
for(int i=1;i<array[i].size();i++)
{
for(int j=1;j<array[j].size();j++)
{
cout<<array[i][j]<<" ";
}
cout<<endl;
}
cout<<"-------------------";
for(int i=0;i<10;i++)
{
for(int j=1;j<=9;j++)
{
if(i>=j)
{
cout<<i<<"*"<<j<<"="<<array[i][j]<<" ";
}
cout<<endl;
}
cin.get();
system("Pause");
return 0;
cout << "Hello world!" << endl;
return 0;
}
输出结果:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
1 2 3 4 5 6 7 8
2 4 6 8 10 12 14 16
3 6 9 12 15 18 21 24
4 8 12 16 20 24 28 32
5 10 15 20 25 30 35 40
6 12 18 24 30 36 42 48
7 14 21 28 35 42 49 56
8 16 24 32 40 48 56 64
-------------------
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=0
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<char> v1;
vector<char>::iterator iter1;
vector<char>::iterator iter2;
v1.push_back('m');
v1.push_back('n');
v1.push_back('o');
v1.push_back('p');
cout << "v1.front() = " << v1.front() << endl;
cout << "v1.back() = " << v1.back() << endl;
iter1 = v1.begin();
cout << *iter1 << endl;
iter2 = v1.end()-1; //注意v1.end()指向的是最后一个元素的下一个位置,所以访问最后一个元素
//的正确操作为:v1.end() - 1;
cout << *iter2 << endl;
return 0;
}
(1) 使用reverse将元素翻转:需要头文件#include<algorithm>
reverse(vec.begin(),vec.end());将元素翻转,即逆序排列!
(在vector中,如果一个函数中需要两个迭代器,一般后一个都不包含)
(2)使用sort排序:需要头文件#include<algorithm>,
sort(vec.begin(),vec.end());(默认是按升序排列,即从小到大).
可以通过重写排序比较函数按照降序比较,如下:
定义排序比较函数:
bool Comp(const int &a,const int &b)
{
return a>b;
}
调用时:sort(vec.begin(),vec.end(),Comp),这样就降序排序。
输出Vector的中的元素
vector<float> vecClass;
int nSize = vecClass.size();
//打印vecClass,方法一:
for(int i=0;i<nSize;i++)
{
cout<<vecClass[i]<<" ";
}
cout<<endl;
需要注意的是:以方法一进行输出时,数组的下表必须保证是整数。
//打印vecClass,方法二:
for(int i=0;i<nSize;i++)
{
cout<<vecClass.at(i)<<" ";
}
cout<<endl;
//打印vecClass,方法三:输出某一指定的数值时不方便
for(vector<float>::iterator it = vecClass.begin();it!=vecClass.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
二维数组的使用:
#include "stdafx.h"
#include <cv.h>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
using namespace std;
int out[3][2] = { 1, 2, 3, 4,5, 6 };
vector <int*> v1;
v1.push_back(out[0]);
v1.push_back(out[1]);
v1.push_back(out[2]);
cout << v1[0][0] << endl;//1
cout << v1[0][1] << endl;//2
cout << v1[1][0] << endl;//3
cout << v1[1][1] << endl;//4
cout << v1[2][0] << endl;//5
cout << v1[2][1] << endl;//6
return 0;
}
vector中insert()的用法详解:http://blog.csdn.net/duan19920101/article/details/51557854
原文:https://blog.csdn.net/duan19920101/article/details/50617190