【发布时间】:2015-11-06 21:20:14
【问题描述】:
假设我有如下代码,用于在另一个数据结构中对一个数据结构的元素进行排序,但记录它们的原始索引:
std::vector<int> numbers = {..};
std::vector<std::pair<int, std::vector<int>::size_type>> temp;
for (std::vector<int>::size_type i = 0; i < numbers.size(); i++)
{
temp.push_back({ numbers[i], i });
}
std::sort(temp.begin(), temp.end(), [](const auto& x, const auto& y) { return x.first < y.first; });
到目前为止一切顺利。但我真正想要的是将数据和索引存储在不同的数据结构中:
std::vector<int> sorted;
std::vector<std::vector<int>::size_type> indices;
使得sorted[i] 处的元素在原始数据结构中位于索引indices[i]。
除了推出我自己的排序算法,或者事后拆分数据结构,使用标准库有什么简单的技巧吗?
【问题讨论】:
-
前几天我看到了这个问题。这是重复的。
标签: c++