首页 > 解决方案 > 获取向量的不同值并保持顺序

问题描述

我想获得实数向量的不同值并保持它们的顺序。例如:[1, -1, 5, -1] -> [1, -1, 5]。到目前为止我做了什么:

std::vector<double> getDistinctValues(const std::vector<double>& data)
{
    std::unordered_set<double> distinct(data.begin(), data.end());
    std::vector<double> result(distinct.begin(), distinct.end());

    return result;
}

此解决方案不会保持顺序。

标签: c++stdvector

解决方案


沿着这些思路,也许:

std::vector<double> sort(const std::vector<double>& data) {
  std::vector<double> result;
  std::unique_copy(data.begin(), data.end(), std::back_inserter(result));
  return result;
}

sort注意:当函数的明确目标是保留元素的顺序时,我不会命名函数。


推荐阅读