【问题标题】:Iterate through struct inside a struct C++ [duplicate]遍历结构C++中的结构[重复]
【发布时间】:2019-09-28 00:31:25
【问题描述】:

我想遍历一个结构的成员。换句话说,我较大的结构向量内部有一个较小的结构。在这种情况下,我想访问 small_strcut_subject 的所有内部结构:

#include <iostream>
#include <vector>

#include "../common/myheader.h"

using namespace std;

struct small_struct {
    string name;

};

struct big_struct {
    struct small_struct small_struct_obj;
};


int main() {


    std::vector<big_struct> big_struct_obj;

    big_struct_obj.push_back(big_struct());

    big_struct_obj[0].small_struct_obj.name = "english";


    for (std::vector<big_struct>::iterator it = big_struct_obj.begin(); it != big_struct_obj.end(); ++it){

//      cout << big_struct_obj[*it].small_struct_obj.name << endl;
    }
}

关于如何遍历一个结构存在问题,但如果它是多个结构,例如我的,我找不到任何解决方案。

【问题讨论】:

  • 不是超级相关,但我建议查看基于范围的 for 循环。它们本质上是手动迭代器循环的一些不错的语法糖。
  • 我知道我朋友的问题,但它不一样,你也可以看到,我的问题里面有多个结构
  • 当然可以,可能类似于:for( big_struct const&amp; struc : big_struct_obj ) cout &lt;&lt; struc.small_struct_obj.name;

标签: c++ loops iteration


【解决方案1】:

你可以这样做:

  cout << it->small_struct_obj.name << endl;

如果您知道如何遍历结构向量,剩下的就是访问for 循环中的结构成员,这可以通过-&gt; 运算符完成。

【讨论】:

  • 我应该删除问题吗?是重复的吗?
  • 让我看看是否有重复。然后我会这样标记它。
  • 这个问题不是重复的,我知道如何遍历结构,但如果结构内部有结构,我就做不到!!
  • 您的回答很好,但您将我的问题标记为重复,但您链接的问题仅在一个结构上迭代。我的问题里面有多个结构!
  • @MericOzcan:我找不到与您的问题完全相同的副本。如果您知道如何遍历结构向量,剩下的就是访问结构的成员,这可以使用 -&gt; 运算符完成。我会将此信息添加到答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-02
  • 2011-03-06
  • 2013-10-04
  • 1970-01-01
相关资源
最近更新 更多