vector的二维初始化:
vector<int> array2(4, 50);//4个元素每个值为50
数组初始化vector
int array[] = { 1,2,5,9,33,2,5,5,4,2 };
vector<int>p(array,array+sizeof(array)/sizeof(array[0]);
增加到二维
vector<vector<int>> dp(5, vector<int>(array, array + sizeof(array) / sizeof(array[0])));
dp.size()//代表行数
dp[0].size()//代表列数
如果想用下标访问
看代码
for (int i = 0; i < dp.size(); ++i)
{
for (int j = 0; j < dp[0].size();++j)
{
cout << dp[i][j] << " ";
}
cout << endl;
}
下标访问很好理解我们来看迭代器访问
vector<vector<int>>::iterator toarr2 = dp.begin();
vector<int>::iterator it = (*toarr2).begin();
for (toarr2 = dp.begin(); toarr2 != dp.end(); ++toarr2) {
for (it = (*toarr2).begin(); it != (*toarr2).end(); ++it) {
std::cout << *it << " ";
}
cout << endl;
}
主要就是要注意迭代器类型的指针的使用;
我们有了这个基础来看一下剑指offer上的题
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
给出函数接口:
bool Find(int target, vector<vector<int> > array)
我们想其实无非就是将这个target和二维数组进行比较得出结论呗,我们来看个程序
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
auto row = array.begin();
auto line = (*row).begin();
while(row!=array.end())
{
line = (*row).begin();
while(line!=(*row).end())
{
if((*line) == target)
{
return true;
}
line++;
}
row++;
}
return false;
}
};
看看你是不是更熟悉了呢?