c++ - 推回地图>*
问题描述
C++
地图<int,矢量>* 最大计数;
当我有一个指向 map maxcount 的指针时,如何正确编写下一条语句?
maxcounts[-m.second]->push_back(m.first);
没有引用我写的指针
maxcounts[-m.second].push_back(m.first);
map<int, vector<char>> maxcounts;
for (pair<char, int> m : counts) {
if (maxcounts.count(-m.second))
maxcounts[-m.second].push_back(m.first);
else
maxcounts.insert({ -m.second, {m.first} });
}
解决方案
要弄清楚如何使用指向地图的指针,首先以这种方式重写循环:
std::map<char, int> counts;
//...
std::map<int, std::vector<char>> maxcounts;
for (std::pair<char, int> m : counts)
maxcounts.insert({-m.second, std::vector<char>()}).first->second.push_back(m.first);
请注意,std::map::insert的返回值是 a std::pair
,first
如果该项目已经在地图中,则该对是现有项目的迭代器,或者是新插入项目的迭代器。因此,您可以在一行中执行测试并插入,而无需if
语句。
push_back
无论插入到地图中的项目是新的还是该项目存在,都会发生。请注意,对于新条目,std::vector
正在插入的条目开始为空。
鉴于此,指向地图版本的指针非常简单:
std::map<char, int> counts;
//...
map<int, vector<char>>* maxcounts;
//
for (pair<char, int> m : counts)
maxcounts->insert({-m.second, std::vector<char>()}).first->second.push_back(m.first);
现在,为什么你首先需要一个指向地图的指针是另一个问题,但要回答你的问题,上面应该可以工作。
推荐阅读
- reactjs - 'globalThis' 未定义
- r - 从 R 中 3 个月的数据中删除选定的几天数据
- oracle - SELECT 与多个 JOINS 包括 LISTAGG 与它自己的 JOIN
- java - 如何执行在类中声明的函数公共方法,而该类又在私有方法中?
- angular - Material Angular v10 Datepicker 不适用于最小值和最大值
- php - UNION ALL 与 INNER JOIN 一起使用
- python - How to read the first few lines of a tsv.gz file in python?
- node.js - Node/Express serving react app : Get request error 304 Not modified
- javascript - how to change arrow keys events to touch events in below html puzzle game
- javascript - 通过 Codeceptjs 和 Puppeteer 迭代表行是否需要 Helper