1.vector 的数据的存入和输出:
#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
int i = 0;
std::vector<int> vor;
for(i = 0;i<10;i++)
{
vor.push_back(i); //把元素一个一个存入到vector中
}
for(std::vector<int>::iterator m = vor.begin(); m != vor.end(); m++ ) //用迭代器的方式输出容器对象的值
{
cout<<*m<<endl;
}
}
2. 对于二维vector的定义。
1)定义一个10个vector元素,并对每个vector符值1-10。
#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
unsigned int i = 0, j = 0;
//定义一个二维的动态数组,有10行,每一行是一个用一个vector存储这一行的数据。
//所以每一行的长度是可以变化的。之所以用到vector<int>(0)是对vector初始化,否则不能对vector存入元素。
vector< vector<int> > Array( 10 , 0 );//vector<int>(0) );
/*上面的语句可以声明成下面的:
vector< vector<int> > Array( 10, 0 ); 表示外层vector不为空,是有内容的;Array( 10, 0 )中,10是指有10个vector<int>;
0是指内层vector有0个int类型的值;都是初始化数量,和一维的vector不太一样;一维的是第一个值是数量,第二个值是初始值;
如果 Array( 10 , 0 )中的0写成2,则下面的屏幕输出就多两列,因为push_back()是在原有的值后面又push进去了9个值;
如果写成Array( 10 ),默认是0,相当于Array( 10 , 0 )。
如果直接vector< vector<int> > Array;就会报错,因为没有初始化,内层vector就不能赋值了;
Array[ j ].push_back( i );就是错误的;
*/
for( j = 0; j < 10; j++ )
{
for ( i = 0; i < 9; i++ )
{
Array[ j ].push_back( i );
}
}
for( j = 0; j < 10; j++ )
{
for( i = 0; i < Array[ j ].size(); i++ ) //这里 i 要声明成unsigned int,因为Array[ j ].size()返回无符号数,所以i也要声明称无符号数;
{
cout << Array[ j ][ i ] << " ";
}
cout<< endl;
}
}
2)定义一个行列都是变化的数组。
#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
int i = 0, j = 0;
//下面是不同于1)中定义的二维数组的方法;
vector< vector<int> > Array; //这里就要注意初始化让外层vector里面有元素;也就是要有vector<int>
vector< int > line;
for( j = 0; j < 10; j++ )
{
Array.push_back( line ); //要对每一个vector初始化,否则不能存入元素。这里的初始化相当于例子1)的初始化了;
for ( i = 0; i < 9; i++ )
{
Array[ j ].push_back( i );
}
}
for( j = 0; j < 10; j++ )
{
for( i = 0; i < Array[ j ].size(); i++ )
{
cout << Array[ j ][ i ] << " ";
}
cout<< endl;
}
}