【发布时间】:2016-09-20 14:06:47
【问题描述】:
假设我有一个vector<int> { 1, 1, 2, 3, 3, 3, 1, 1 },我想将其转换为“相邻元素计数”的vector<std::pair<int, int>> { {1, 2}, {2, 1}, {3, 3}, {1, 2} }:
我可能会用一个指示新“邻接集”开始的标志和一个计算连续元素数量的计数器来迭代向量。我只是想知道 STL 中是否还没有更抽象和优雅的解决方案,因为这似乎是一个非常常见的用例。像 unique、similar_find 或 equal_range 这样的算法似乎非常接近我正在寻找的东西,但不是很正确,而且我自己从头开始实施它可能没有任何好处。
【问题讨论】:
-
"我只是想知道 STL 中是否还没有更抽象和优雅的解决方案,因为这似乎是一个非常常见的用例" 对于向量?也许对于一张地图来说,仍然“常见”是一个延伸。
-
C++ 库中没有内置算法可以做这样的事情。由你来实现它。听起来你已经很好地掌握了算法,所以等待一个不会来自中间管的人的答案是没有意义的。
-
向量中的相邻元素是什么?至少有两种解释。是什么阻碍了您简单地通过向量进行交互?
-
@AmiTavory 正确,我这边的错字。对不起。