std::unique算法只在连续的元素组中保留唯一的元素。同时,有时知道初始容器中有多少个 * 特定 * 元素是有用的。比如用元素的数量和它们的数量进行卷积。
在STL中是否有这样的算法或一些直接的方法来做到这一点,而不考虑从头开始编写整个代码(这很容易,但我想尽可能地重用现有的解决方案),并避免额外的容器,如std::unordered_map
等?关键是要有一个简单和直接的解决方案,如std::equal
。
它看起来像std::unique
,带有额外的迭代器来写入数量,或者使std::unique
与std::pair
一起工作,其中first
将存储值,second
将存储其数量。
例如
集装箱
[1, 1, 2, 2, 1, 1]
字符串
因此,我希望有两个容器[1,2,1]和[2,2,2],其中第一个保持值,第二个保持连续组中的数量(在这种情况下[1,2]和[4,2]可以是一个选项,但这是稍微不同的主题)或一个容器,如[{1,2},{2,2},{1,2}]。
1条答案
按热度按时间cwdobuhd1#
在
<ranges>
的帮助下,您可能希望使用views::chunk_by
字符串
Demo的
如果您需要分别收集数字和金额,可以使用
views::keys
/views::values
型
Demo的