一维数组:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int>v;
int i;
v.push_back(1);//插入元素
v.push_back(2);
v.push_back(3);
v.pop_back();//删除元素(删最后一个元素)
for(i=0;i<v.size();i++)
{
if(i!=v.size()-1)
{
cout<<v[i]<<' ';
}
else
{
cout<<v[i]<<endl;
}
return 0;
}
vector<int>().swap(v);//清空vector的内存;
vector调用构造函数快速初始化:
int n=10;
vector<int> v(n,1);//此时v里面有10个1;
二维数组:
定义:
vector<vector<int> >vec2(n,vector<int>(m));
或
int i;
vector<vector<int> >vec2;
for(i=0;i<5;i++)
{
vector<int>x(5);
vec[i].push_back(x);
}
定义一个长度为n的,全是0的动态数组x,下面哪种方法是错的
A.vector<int> x(n);//默认的初始值为0,所有这里(n,0)与(n)等价
B.vector<int> x(0,n);//相当于长度为0的,全是n的
C.vector<int> x;
for(int i=0;i<n;i++)
{
x.push_back(0);//一个一个0往后加
}
D. vector<int> x(n,0);
例题:锯齿矩阵是指每一行包含的元素个数不相同的矩阵,比如:
第一行:3 5 2 6 1
第二行:2 3 4
第三行:1 6 2 7
读入若干对整数(x,y),表示在第x行的末尾加上一个元素y。输出最终的锯齿数组。初始时矩阵为空。
输入格式
第一行输入两个整数n,m(1<=n,m<=10000),其中n表示锯齿数组的行数,m表示插入的元素总数。
接下来一共m行,每行两个整数x,y(1<=x<=n,0<=y<=10000),表示在第x行的末尾插入一个元素y。
输出格式
一共输出n行,每行若干个用空格分隔的整数。如郭某行没有任何元素,则输出一个空行。
样例输入:
3 12
1 3
2 2
2 3
2 4
3 1
3 6
1 5
1 2
1 6
3 2
3 7
1 1
样例输出:
3 5 2 6 1
2 3 4
1 6 2 7
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n,m,x,y,i,j;
cin>>n>>m;
vector<vector<int> >vec2(n,vector<int>());
for(i=0;i<m;i++)
{
cin>>x>>y;
vec2[x-1].push_back(y);
}
for(i=0;i<n;i++)
{
if(vec2[i].size())
{
for(j=0;j<vec2[i].size();j++)
{
if(j!=vec2[i].size()-1)
{
cout<<vec2[i][j]<<' ';
}
else
{
cout<<vec2[i][j]<<endl;
}
}
}
else
{
cout<<endl;
}
}
return 0;
}