加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 迭代对的向量

发布时间:2020-12-16 10:34:57 所属栏目:百科 来源:网络整理
导读:我写了下面的代码片段,但它似乎没有工作. int main(){ int VCount,v1,v2; pairfloat,pairint,int edge; vector pairfloat,int edges; float w; cin VCount; while( cin v1 ){ cin v2 w; edge.first = w; edge.second.first = v1; edge.second.second = v2; e
我写了下面的代码片段,但它似乎没有工作.

int main(){
    int VCount,v1,v2;
    pair<float,pair<int,int> > edge;
    vector< pair<float,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,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,int> > >,std::vector<_Tp,_Alloc>::const_iterator = __gnu_cxx::__normal_iterator<const std::pair<float,int> >*,std::vector<std::pair<float,int> > > >,typename std::_Vector_base<_Tp,_Alloc>::_Tp_alloc_type::const_pointer = const std::pair<float,int> >*]

谁能帮我吗?

解决方法

循环中至少有三个错误.

for ( vector < pair<float,int>> >::const_iterator it = edges.begin() ; itt != edges.end; it++){
        cout >> it.first;
    }

首先,你必须使用edges.end()而不是edges.end.身体内部必须有

cout << it->first;

代替

cout >> it.first;

要逃避这些错误,你可以简单地写一下

for ( const pair<float,int> > &edge : edges )
{
   std::cout << edge.first;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读