【发布时间】:2014-10-25 16:45:59
【问题描述】:
我已经编写了以下代码 sn-p 但它似乎不起作用。
int main(){
int VCount, v1, v2;
pair<float, pair<int,int> > edge;
vector< pair<float, pair<int,int> > > edges;
float w;
cin >> VCount;
while( cin >> v1 ){
cin >> v2 >> w;
edge.first = w;
edge.second.first = v1;
edge.second.second = v2;
edges.push_back(edge);
}
sort(edges.begin(), edges.end());
for ( vector < pair<float,pair<int,int>> >::const_iterator it = edges.begin() ; itt != edges.end; it++){
cout >> it.first;
}
return 0;
}
它在包含 for 循环的行抛出错误。错误是:
error: no match for ‘operator<’ in ‘it < edges.std::vector<_Tp, _Alloc>::end [with _Tp = std::pair<float, std::pair<int, int> >, _Alloc = std::allocator<std::pair<float, std::pair<int, int> > >, std::vector<_Tp, _Alloc>::const_iterator = __gnu_cxx::__normal_iterator<const std::pair<float, std::pair<int, int> >*, std::vector<std::pair<float, std::pair<int, int> > > >, typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::const_pointer = const std::pair<float, std::pair<int, int> >*]
谁能帮帮我?
【问题讨论】:
-
不应该是
it != edges.end()吗?我在任何地方都没有看到itt声明 -
如果您在 for 循环中的尖括号之间添加一个空格,它是否有效:
vector < pair<float,pair<int,int> > >::const_iterator? -
@EdChum:直角括号问题自 C++11 起已解决
-
@PiotrS。取决于编译器,这就是为什么它是一个狂野的平底船
-
@EdChum:不,每个 C++11 编译器都必须正确处理
>>
标签: c++ vector stl iterator const-iterator