[英]How to use std::map::operator= with initializer lists
關於boost::assign::map_list_of
之前我問了同樣的問題(沒有得到答案),然后我想也許使用大括號初始化會有所幫助,但事實並非如此。
這非常有效:
std::map<int, char> m = {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}};
但這不是:
std::map<int, char> m;
m = {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}};
Visual Studio 2013給出錯誤error C2593: 'operator =' is ambiguous
,可以是operator=(std::initalizer_list)
或operator=(std::map&&)
。
有可能讓第二個版本工作嗎? 例如,對於m
是成員變量的情況。
您可以構造一個臨時的並在賦值中使用它。
std::map<int, char> m;
m = std::map<int, char>{{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}};
如果您不想重復該類型,可以使用decltype
。
std::map<int, char> m;
m = decltype(m){{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}};
相關SO帖子:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.