小编yae*_*t11的帖子

为什么这在正常的 for 循环中有效,但在基于范围的 for 循环中无效?

void set_fee(Patron p, int fee)
{
    for (Patron x : patrons)
    {
        if (p.get_name() == x.get_name()) x.set_fee(fee);
    }
    
    for (int i = 0; i < patrons.size(); i++)
    {
        if (patrons[i].get_name() == p.get_name()) patrons[i].set_fee(fee);
    }
}
Run Code Online (Sandbox Code Playgroud)

patron只是我创建的一些类,这里的任何函数都不重要,get_name()只是返回对象的名称并将对象的费用set_fee(fee)设置为费用。fee

但是有人知道为什么第一个循环不起作用但第二个循环起作用吗?p我基本上只是想在向量内部查找patrons,一旦找到它,我想更改向量内赞助对象的费用,但第一种方法不起作用,为什么?

c++ for-loop stdvector c++11 range-based-loop

1
推荐指数
1
解决办法
190
查看次数

标签 统计

c++ ×1

c++11 ×1

for-loop ×1

range-based-loop ×1

stdvector ×1