Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;使用引用作为键的无序地图放置 在C++中,当将一个引用引用到无序映射中时,是否可以使用一个const引用作为一个关键字?(它按预期编译和运行,但我想知道引擎盖下发生了什么)_C++_Pass By Reference_Unordered Map - Fatal编程技术网

C++;使用引用作为键的无序地图放置 在C++中,当将一个引用引用到无序映射中时,是否可以使用一个const引用作为一个关键字?(它按预期编译和运行,但我想知道引擎盖下发生了什么)

C++;使用引用作为键的无序地图放置 在C++中,当将一个引用引用到无序映射中时,是否可以使用一个const引用作为一个关键字?(它按预期编译和运行,但我想知道引擎盖下发生了什么),c++,pass-by-reference,unordered-map,C++,Pass By Reference,Unordered Map,emplace是否会创建const引用的副本,或者我需要确保引用的内存在地图存在之前有效 我在哪里可以读到更多关于这方面的信息 void func( const std::vector<std::string>& itemList) { int i = 0; std::unordered_map<std::string, int>itemMap; for (const auto& item : itemList){ itemMap.emp

emplace是否会创建const引用的副本,或者我需要确保引用的内存在地图存在之前有效

我在哪里可以读到更多关于这方面的信息

void func(
    const std::vector<std::string>& itemList) {
 int i = 0;
 std::unordered_map<std::string, int>itemMap;
 for (const auto& item : itemList){
  itemMap.emplace(item, i);
 }
}
void func(
const std::vector和itemList){
int i=0;
std::无序地图;
用于(常量自动和项目:项目列表){
项目地图。安置(项目,i);
}
}
实际上

for (const auto& item : itemList){
具有以下相同的效果

for (const std::string& item : itemList){
emplace
只需使用
const std::string&
在该位置创建另一个字符串即可

我们喜欢
emplace
而不是
insert
的原因是第一个只创建一次对象,而最后一个将创建一对对象,然后将其移动到该位置。

实际上

for (const auto& item : itemList){
具有以下相同的效果

for (const std::string& item : itemList){
emplace
只需使用
const std::string&
在该位置创建另一个字符串即可


我们喜欢
emplace
而不是
insert
的原因是第一个只会创建一次对象,而最后一个会创建对象对,然后将其移动到该位置。

它会将引用字符串的内容复制到映射键中,请参见
itemMap
的定义。一些可能有用的链接-,它将引用字符串的内容复制到映射键中,请参见
itemMap
的定义。一些可能有用的链接-,