gpt4 book ai didi

c++ - 如何计算 vector 中相等的相邻元素?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:15:20 46 4
gpt4 key购买 nike

假设我有一个 vector<int> { 1, 1, 2, 3, 3, 3, 1, 1 }我想把它转换成 vector<std::pair<int, int>> { {1, 2}, {2, 1}, {3, 3}, {1, 2} } “相邻元素计数”:

我可能会使用指示新“邻接集”开始的标志和计算连续元素数的计数器来迭代 vector 。我只是想知道 STL 中是否还没有更抽象和优雅的解决方案,因为这似乎是一个非常常见的用例。 unique、adjacent_find 或 equal_range 等算法似乎非常接近我正在寻找的东西,但不是很正确,我自己从头开始实现它可能没有任何好处。

最佳答案

从算法的角度来看,最接近的是 run-length encoding我会说。我认为没有现成的算法可以做到这一点,但代码应该很简单:

std::vector<std::pair<int, int>> out; 
for (int i: in)
{
if (out.empty() || out.back().first != i)
{
out.emplace_back(i, 1);
}
else
{
++out.back().second;
}
}

Live-example.

关于c++ - 如何计算 vector 中相等的相邻元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596336/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com