我有以下代码
#include <iostream>
#include <vector>
using namespace std;
int distance(vector<int>& set1, vector<int>& set2) {
int distance = 0;
unsigned int i1 = 0;
unsigned int i2 = 0;
while(i1 < set1.size() && i2 < set2.size()) {
if(set1[i1] == set2[i2]) {
++i1; ++i2;
} else {
++distance;
set1[i1] < set2[i2] ? ++i1 : ++i2;
}
}
unsigned int zero = 0;
distance += std::max(set1.size() - i1, zero) + std::max(set2.size() - i2, zero);
}
int main() {
vector<vector<int> > frequent_sets;
vector<int> vector3;
vector3.push_back(1);vector3.push_back(2);vector3.push_back(3);
vector<int> vector2;
vector2.push_back(1);vector2.push_back(2);
frequent_sets.push_back(vector3);
frequent_sets.push_back(vector3);
frequent_sets.push_back(vector2);
frequent_sets.push_back(vector3);
for(vector<vector<int> >::iterator itouter = frequent_sets.begin(); itouter != frequent_sets.end(); ++itouter)
for(vector<vector<int> >::iterator itinner = (itouter + 1); itinner != frequent_sets.end(); ++itinner)
if(distance(*itinner, *itouter) == 0) {
cout << "Hey" << endl;
}
}
当我试图编译时,我得到了错误:
生成所有建筑文件:
../src/testiterator.cpp调用:gcc
C++编译器G++-O0-G3-墙-C
-fmessage length=0-mmd-mp-mf“src/testiterator.d”-mt“src/testiterator.d”-o“src/testiterator.o”“../src/testiterator.cpp”
/Ur/Eng/C++/4.3/Buts/StLyTyrActuaBaseType类型:h:在实例化中
'std::iterator_traits>':
../src/testerator.cpp:50(50个):
从此处实例化
/Ur/Eng/C++/4.3/BIT/STLyTyrActuaBaseType类型:h:133:
错误:没有名为的类型
类中的“迭代器”类别
标准::矢量
'make:***[src/testiterator.o]错误1
为什么会这样?当我替换时
distance(*itouter, *itinner) == 0
具有
itinner->size() == itouter->size()
代码正在编译并运行良好。