【问题标题】:Store pair values in vector C++ from a 2d vector将二维向量中的对值存储在向量 C++ 中
【发布时间】:2020-12-01 13:05:48
【问题描述】:

我得到了一个二维向量 (A)。我需要存储包含元素 0 的向量的行和列索引的值。

这是我的代码-

vector<pair<int,int>>v;
   for(int i=0;i<A.size();i++){
       for(int j=0;j<A[i].size();j++){
           if(A[i][j]==0){
               v.push_back(make_pair(i.first,j.second));
           }
       }
   }

但我一直收到此错误

错误:'__gnu_cxx::__alloc_traitsstd::allocator<:vector>, std::vector >::value_type' {aka 'class std::vector'} 没有 名为“第一”的成员

错误:'__gnu_cxx::__alloc_traitsstd::allocator<:vector>, std::vector >::value_type' {aka 'class std::vector'} 没有 名为“第二”的成员

【问题讨论】:

  • 您编辑了代码,但没有编辑错误消息。你确定你仍然遇到同样的错误吗?
  • ij 是你的 int 不雅点...
  • 已解决问题,谢谢。

标签: c++ c++11 vector stl std-pair


【解决方案1】:

ints 没有名为 firstsecond 的成员。

要添加到表示二维索引的对向量中,您只需要:

if(A[i][j]==0) {
    v.push_back({i, j});
}

【讨论】:

    【解决方案2】:

    在制作配对时,您只需将值输入到 make_pair 函数中。 如果你想用 (i, j) 值组成一对,那么你写make_pair(i,j)。要访问值,请使用 firstsecond 成员。

    if(A[i][j] == 0){
       v.push_back(make_pair(i,j));
    }
    

    要访问这些值,请编写 v[i].firstv[i].second

    【讨论】:

      【解决方案3】:

      这应该工作

      vector<pair<int,int>>v;
      for(int i=0;i<A.size();i++){
         for(int j=0;j<A[i].size();j++){
             if(A[i][j]==0){
                 v.push_back(make_pair(i,j));
             }
         }
      }
      

      【讨论】:

        猜你喜欢
        • 2022-11-20
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-04
        • 2019-09-23
        • 1970-01-01
        相关资源
        最近更新 更多