相关疑难解决方法(0)

与foreach在地图上的意外副本

我试图循环地图的条目,我得到意想不到的副本.这是程序:

#include <iostream>
#include <map>
#include <string>

struct X
{
    X()
    {
        std::cout << "default constructor\n";
    }

    X(const X&)
    {
        std::cout << "copy constructor\n";
    }
};

int main()
{
    std::map<int, X> numbers = {{1, X()}, {2, X()}, {3, X()}};
    std::cout << "STARTING LOOP\n";
    for (const std::pair<int, X>& p : numbers)
    {
    }
    std::cout << "ENDING LOOP\n";
}
Run Code Online (Sandbox Code Playgroud)

这是输出:

default constructor
copy constructor
default constructor
copy constructor
default constructor
copy constructor
copy constructor
copy constructor
copy constructor
STARTING LOOP
copy constructor …
Run Code Online (Sandbox Code Playgroud)

c++ foreach map auto c++11

16
推荐指数
2
解决办法
1069
查看次数

标签 统计

auto ×1

c++ ×1

c++11 ×1

foreach ×1

map ×1