下面是在二维数组中的查找target, 错误提示:no viable overloaded '='
class Solution {
public:
bool Find(vector<vector<int> > array,int target) {
vector<int>::iterator itrx;
vector<int>::iterator itry;
for(itrx=array.begin();itrx!=array.end();itrx++){ //: no viable overloaded '='
for(itry=itrx.begin();itry!=itrx.end();itry++){
if(itry==target){
return true;
} else if(itry > target) {
break;
}
}
}
return false;
}
};
谢谢
知道怎么修改了,以前的错误主要源于自己不知道如何访问嵌套的vector,现在下面两种方法都可以访问嵌套的vector,方便后面的人查看访问方式。
方法一:
class Solution {
public:
bool Find(std::vector<std::vector<int> > array,int target) {
std::vector<std::vector<int>>::iterator row_num;
std::vector<int>::iterator col_num;
for(row_num=array.begin();row_num!=array.end();row_num++){
for(col_num=(*row_num).begin();col_num!=(*row_num).end();col_num++){
if(*col_num==target){
return true;
} else if(*col_num>target) {
continue;
}
}
}
return false;
}
};
方法二:
class Solution {
public:
bool Find(std::vector<std::vector<int> > array,int target) {
int row_num = array.size();
int col_num = (*array.begin()).size();
for(int i=0;i<row_num;i++){
for(int j=0;j<col_num;j++){
if(array[i][j]==target){
return true;
} else if(array[i][j]>target){
break;
}
}
}
return false;
}
};
类型不匹配,array.begin()返回vector<vector<int>>::iterator,不是vector<int>::iterator
class Solution {
public:
bool Find(vector > array,int target) {
vector >::iterator itrx;
vector::iterator itry;
for(itrx=array.begin();itrx!=array.end();itrx++){ //: no viable overloaded '='
for(itry=itrx.begin();itry!=itrx.end();itry++){
if(itry==target){
return true;
} else if(itry > target) {
break;
}
}
}
return false;
}
};
class Solution {
public:
bool Find(vector > array,int target) {
vector >::iterator itrx;
vector::iterator itry;
for(itrx=array.begin();itrx!=array.end();itrx++){ //: no viable overloaded '='
for(itry=itrx.begin();itry!=itrx.end();itry++){
if(itry==target){
return true;
} else if(itry > target) {
break;
}
}
}
return false;
}
};
std:: vectorstd::vector<int >::iterator itrx;
vector > array
vector::iterator
这两个怎么匹配?