STL中有没有像std::unique这样的算法来存储相等对象的数量?

问题描述 投票:0回答:1

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}] 这样的一个容器。

借助 C++20
c++ std
1个回答
0
投票
,您可以

auto l = {1, 1, 2, 2, 1, 1};
auto r = l | std::views::chunk_by(std::ranges::equal_to{})
           | std::views::transform([](auto chunk) {
               return std::pair{chunk.front(), chunk.size()};
             });


© www.soinside.com 2019 - 2024. All rights reserved.