前言
东方欲晓,莫道君行早。
踏遍青山人未老,风景这边独好。
一、一维 vector
- 创建一维
vector
:
vector<int> nums; //不指定长度
vector<int> nums(n); //指定长度为n
- 添加元素:
nums.push_back(1); //直接从数组末端添加一个元素
nums[i] = 1; //直接将nums的第i个位置赋值为1
- 数组遍历:
for(int i=0; i<nums.size(); i++)
{
cout << nums[i] << endl;
}
- 获得长度:nums.size();
- 排序(O(n log n)):sort(nums.begin(),nums.end());
- 翻转:reverse(nums.begin(),nums.end());
- 合并两个 vector :合并 nums1 和 nums2,并将合并后的数组赋值给 nums:
vector<int> nums1(m),nums2(n);
vector<int> nums;
nums.resize(m+n);
merge( nums1.begin(), nums1.end(), nums2.begin(), nums2.end(), nums);
二、二维 vector
- 创建 m*n 的二维 vector :(直接定义)
vector<vector <int> > nums(m ,vector<int>(n)); //m*n的二维vector
解释: 定义了一个 vector
的容器,元素类型为 vector< int >
,初始化包含 m
个 vector < int >
对象,每个对象都是一个新创立的 vector < int >
对象的拷贝,而这个新创立的 vector < int >
对象被初始化为包含 n
个 0
。
vector< int >(n)
:表示构造一个无名且含n
个0
的vector< int >
对象。
方法一:
vector<vector <int> > nums;
nums.resize(m);
for(int i=0; i<m; i++)
{
nums[i].resize(n);
}
方法二:
vector<vector <int> >nums;
nums.resize(m, vector<int>(n));
初始化二维数组:
//初始化一个:m*n的二维vector,所有元素为0
vector<vector <int> > nums(m ,vector<int>(n, 0));
- 获得二维数组的行数:
nums.size();
- 获得二维数组的列数:
nums[0].size();
int m = nums.size(), n = nums[0].size();
for(int i = 0; i < m; i++)
{
for(int j = 0; j < n; j++)
{
cout << nums[i][j] << endl;
}
}