久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

std::map emplace 不復(fù)制值

std::map emplace without copying value(std::map emplace 不復(fù)制值)
本文介紹了std::map emplace 不復(fù)制值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

C++11 std::map<K,V> 類型有一個 emplace 函數(shù),許多其他容器也是如此.

The C++11 std::map<K,V> type has an emplace function, as do many other containers.

std::map<int,std::string> m;

std::string val {"hello"};

m.emplace(1, val);

此代碼如宣傳的那樣工作,直接替換 std::pair,但它會生成 keyval<的副本/code> 正在發(fā)生.

This code works as advertised, emplacing the std::pair<K,V> directly, however it results in a copy of key and val taking place.

是否也可以將值類型直接嵌入到地圖中?我們能比將調(diào)用中的參數(shù)移動到 emplace 做得更好嗎?

Is it possible to emplace the value type directly into the map as well? Can we do better than moving the arguments in the call to emplace?

這是一個更全面的例子:

Here's a more thorough example:

struct Foo
{
   Foo(double d, string s) {}
   Foo(const Foo&) = delete;
   Foo(Foo&&) = delete;
}

map<int,Foo> m;
m.emplace(1, 2.3, string("hello")); // invalid

推薦答案

你傳遞給 map::emplace 的參數(shù)會被轉(zhuǎn)發(fā)給 map::value_type 的構(gòu)造函數(shù), 即 pair.所以你可以使用 std::pair 的 分段構(gòu)造構(gòu)造函數(shù)避免中間復(fù)制和移動.

The arguments you pass to map::emplace get forwarded to the constructor of map::value_type, which is pair<const Key, Value>. So you can use the piecewise construction constructor of std::pair to avoid intermediate copies and moves.

std::map<int, Foo> m;

m.emplace(std::piecewise_construct,
          std::forward_as_tuple(1),
          std::forward_as_tuple(2.3, "hello"));

現(xiàn)場演示

這篇關(guān)于std::map emplace 不復(fù)制值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

Assertion failed (size.widthgt;0 amp;amp; size.heightgt;0)(斷言失敗(size.width0 amp;amp; size.height0))
Rotate an image in C++ without using OpenCV functions(在 C++ 中旋轉(zhuǎn)圖像而不使用 OpenCV 函數(shù))
OpenCV: process every frame(OpenCV:處理每一幀)
Why can#39;t I open avi video in openCV?(為什么我不能在 openCV 中打開 avi 視頻?)
OpenCV unable to set up SVM Parameters(OpenCV 無法設(shè)置 SVM 參數(shù))
Convert a single color with cvtColor(使用 cvtColor 轉(zhuǎn)換單一顏色)
主站蜘蛛池模板: 天堂一区二区三区 | 日韩一级黄色片 | 成人在线视频免费观看 | 欧美日韩三区 | 91成人精品一区在线播放 | 国产成人精品一区二区 | 亚洲无人区一线二线三线 | 毛片网站在线播放 | 免费在线观看www | 噜噜噜在线 | 成人午夜av | 亚洲欧美精品一区二区 | 欧美激情视频一区二区三区 | 97精品国产 | 国产欧美综合一区二区三区 | 日本加勒比视频 | 中文字幕高清 | 久久免费视频网站 | 天天爽夜夜操 | 日本中文字幕在线视频 | 91久久久精品 | 日本欧美久久久久免费播放网 | 国产成人午夜高潮毛片 | 免费一区二区 | 国产一区二区网站 | 午夜成人在线视频 | 日韩福利在线 | www.狠狠操| www.三级 | 日韩成人一区 | av免费播放| 日韩欧美精品 | 国产精品少妇 | 免费久久| 女教师合集乱500篇小说 | 精品日韩在线观看 | 日韩av在线免费播放 | 日韩视频在线观看 | 青青在线 | 欧美激情综合 | 国产三级午夜理伦三级 |