在C++中基于范围的for循环中使用和不使用“&”有什么区别?[duplicate]

iovurdzv  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(165)
    • 此问题在此处已有答案**:

Range based loop: get item by value or reference to const?(5个答案)
Range based for-loop with &(3个答案)
昨天关门了。
第一个月
我想知道使用&是否会有很大的不同,我们可以使用它直接访问迭代器的第二个元素吗?

7kqas0il

7kqas0il1#

在基于范围的for循环中使用&运算符时,您是在创建对元素的引用,而不是复制它。这是保存时间和资源的好方法,特别是当元素是一个需要花费一些时间来复制的大对象时。

7kqas0il

7kqas0il2#

像这样使用结构化绑定迭代Map,引用将避免复制类。添加const是因为print循环不应该修改Map中的任何内容。

#include <map>
#include <iostream>

int main()
{
    std::map<int, int> map{ {1,2}, {2,5}, {3,7} };

    for (const auto& [key, value] : map)
    {
        // key will be a const reference to the key at the current position in the map
        // value will be a const reference to the value at the current position in the map
        std::cout << key << ", " << value << "\n";
    }

    return 0;
}

相关问题