C++ 是领带';当元组用作映射中的键时复制的对象?

C++ 是领带';当元组用作映射中的键时复制的对象?,c++,c++11,dictionary,reference,tuples,C++,C++11,Dictionary,Reference,Tuples,假设我们有一张地图 using namespace std; unordered_map<tuple<string,string>,string> map; a和b是否被实际复制,或者地图是否只保留它们的引用,就像使用tie生成的元组一样?被实际复制。映射中的键是tuple,由传入的tuple构造而成。有没有方法防止使用引用而不是指针进行复制?我想您可以尝试无序映射。不知道这是否有效。我觉得这是一件很奇怪的事。首先,只要映射引用它们,您就必须以某种方式保持一组strin

假设我们有一张地图

using namespace std;
unordered_map<tuple<string,string>,string> map;

a
b
是否被实际复制,或者地图是否只保留它们的引用,就像使用
tie
生成的元组一样?

被实际复制。映射中的键是
tuple
,由传入的
tuple
构造而成。有没有方法防止使用引用而不是指针进行复制?我想您可以尝试
无序映射。不知道这是否有效。我觉得这是一件很奇怪的事。首先,只要映射引用它们,您就必须以某种方式保持一组
string
变量处于活动状态。听起来像是XY问题-你真正想解决的问题是什么?它与我不久前问的一个问题有关。无论我做了什么,它都是基准测试中速度最快的,所以我想可能地图实际上没有复制元组元素。@Igor:请在答案部分写下答案。。。。
string a("a"), b("b");
map.emplace( std::tie(a,b), "c" );