最近开始熟悉C++11,auto
关键字很棒!打字:
for (auto bar : bars) {
哦,太令人满意了。保持代码可读性和美观性。仍然感觉它停止了你所有的动力是以下几点:
foo.insert(std::pair<std::string, bar>("soVerbose", baz));
// As opposed to simply:
foo.insert("soVerbose", baz);
有什么好的理由是这样吗?是否有一些巧妙的方法可以让它不那么冗长?我知道
[]
运算符可用于将元素插入 map ,但功能略有不同。 最佳答案
使用 emplace 函数:
#include <iostream>
#include <utility>
#include <map>
int main()
{
std::map<std::string, std::string> m;
// uses pair's copy-constructor
m.emplace(std::make_pair(std::string("a"), std::string("a")));
// uses pair's converting copy constructor
m.emplace(std::make_pair("b", "abcd"));
// uses pair's template constructor
m.emplace("d", "ddd");
// uses pair's piecewise constructor
m.emplace(std::piecewise_construct,
std::forward_as_tuple("c"),
std::forward_as_tuple(10, 'c'));
for (const auto &p : m) {
std::cout << p.first << " => " << p.second << '\n';
}
}
关于c++ - 减少冗长 : inserting elements into map,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20531466/