首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何初始化unordered_map< vector<int> >?

如何初始化unordered_map< vector<int> >?
EN

Stack Overflow用户
提问于 2014-07-24 08:49:26
回答 4查看 7.5K关注 0票数 3

我在工作中遇到了一个问题

在我的unordered_map类中有一个vector<int>上的c++

像这样的unordered_map < int, vector<int> >

那么,如何初始化嵌套容器,以便当我插入哈希表的键时,值(向量)将为10?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-07-24 08:57:01

您可以使用列表初始化:

代码语言:javascript
运行
复制
std::unordered_map<int, std::vector<int>> m
  { { 2, std::vector<int>(10, 0) }
  , { 5, std::vector<int>(10, 0) }
  , { 6, std::vector<int>(10, 0) }
  , { 9, std::vector<int>(10, 0) }
  };
票数 4
EN

Stack Overflow用户

发布于 2014-07-24 08:56:17

很简单:

代码语言:javascript
运行
复制
std::unordered_map<int, std::vector<int>> my_map;

my_map[123] = std::vector<int>{1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };

现在,my_map将包含一个条目,其中键123和数据是包含10个条目的向量。

票数 2
EN

Stack Overflow用户

发布于 2014-07-24 09:32:09

不要允许用户直接访问地图,让他们通过访问器,这样您就可以确保以您想要的方式填充向量:

代码语言:javascript
运行
复制
class FooBar
{
public:
  // access the map
  std::vector<int>& operator[](int n);

private:
  std::unordered_map<int, std::vector<int>> map;
};

std::vector<int>& FooBar::operator[](int n)
{
  auto iter = map.find(n);
  if (iter == map.end()) // index not found, so insert it
    iter = map.emplace(n, std::vector<int>(10, 0)).first;
  return *iter;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24929142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档