目前,我在 vector 中有一些数据。目前,我想将 vector 转换为 map 。
所以它会组织如下(N是偶数)。
vector :元素1、元素2、元素3、元素4 ...元素N。
map: key1: 元素 1, value1: 元素 2, key2: 元素 3 value2: 元素 4...
目前,我只是枚举 vector ,有没有其他优雅的方式来做到这一点。 C++11 是首选。谢谢。
for (int x = 0; x < vec.size(); )
{
map[vec[x]] = vec[x+1];
x+=2;
}
最佳答案
您的代码有效(注意 Michael J 的建议,如果有奇数则不处理最后一个元素)。
有一点可以改进。调用 map[vec[x]]
使用 value_type
的默认构造函数构造一个条目,然后复制赋值运算符从 vec[ x+1]
.
您可以通过以下方式避免复制分配步骤:
the_map.insert( std::make_pair(vec[x], vec[x+1]) );
我认为这最终会从这对 map 条目中复制构造。在 C++11 中你可以这样做:
the_map.emplace(vec[x], vec[x+1]);
这允许编译器最小化完成的复制量。如果你的对象支持移动语义并且你想在之后销毁 vector ,你甚至可以去:
the_map.emplace( std::move(vec[x]), std::move(vec[x+1]) );
关于c++ - 如何以优雅的方式将 vector 复制到STL中的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23259313/