打印/修改类对象的特定成员变量,其类定义列表(STL)包含的元素类型

Posted

技术标签:

【中文标题】打印/修改类对象的特定成员变量,其类定义列表(STL)包含的元素类型【英文标题】:Printing/modifying a specific member variable of a class object, whose class defines the type of elements the list(STL) contains 【发布时间】:2017-07-16 12:17:34 【问题描述】:
class pair

public:
    int a, b;
    pair(int tmp_a, int tmp_b)
    
        a = tmp_a;
        b = tmp_b;
    
;

int main()

    list<pair> l;
    l.push_back(pair(1,6));
    l.push_back(pair(2,7));
    l.push_back(pair(3,8));
    l.push_back(pair(4,9));
    l.push_back(pair(5,10));

    for (auto& pair_item : l/*std::list<pair>::iterator i = l.begin(); i != l.end(); i++*/) //Edited
    
        // print/modify the member variables in the object that iterator i points to 
    
    return 0;

(参考代码) 该列表具有类型对的元素。假设我希望修改列表中的元素(类型对的对象),例如将 b 更改为 b + a。这样的操作怎么做?

【问题讨论】:

您使用(仍然正确,但)老式 for 循环而不是范围 for 的任何特殊原因? 我还不太习惯。我以前在很多场合都使用过基于范围的循环,但在这个特殊场合,它并没有打动我。我想我更专注于我遇到的问题。 @PuneetSingh 如果您的代码有问题,您应该在问题中明确说明(逐字错误消息)。 【参考方案1】:

...例如将b 更改为b + a。这样的操作怎么做?

您可以执行以下操作:

for(auto& pair_item : l) 
    pair_item.b += pair_item.a;


至于您的示例代码中观察到的问题:

for (list<int>::iterator i = l.begin(); i != l.end(); i++)
  // ^^^^^^^^^ Isn't matching `list<pair>`

    (*i).b += (*i).a; // Should do the operation you want

【讨论】:

感谢您指出错误。我打算写list&lt;pair&gt; 而不是list&lt;int&gt;

以上是关于打印/修改类对象的特定成员变量,其类定义列表(STL)包含的元素类型的主要内容,如果未能解决你的问题,请参考以下文章

static关键字

如何使用另一个类中的对象的特定变量?

类与对象的一些掌握事项

Java基本概念

如何通过对象的具有特定变量列表循环?

设计模式之状态模式