代码之家  ›  专栏  ›  技术社区  ›  WillEnsaba

离散域到连续域的映射

c++
  •  -1
  • WillEnsaba  · 技术社区  · 6 年前

    我正在将一个连续域映射到一个离散域。这样,我有一个向量 v1 由随机值组成。该向量的每个索引可以表示特定值(例如,索引0表示)。 id 999)。翻译 V1 进入之内 v2 ,首先我复制 V1 进入之内 v1.1 按升序排序。那么,对于 V1.1 我搜索它的位置 V1 并将其索引包含到 V2 如下图所示。

    index     1,    1,    2,    2,    3
    v1   = {0.1, 0.22, 0.99, 0.22, 0.55}
    v1.1 = {0.1, 0.22, 0.22, 0.55, 0.99}
    v2   = {  1,    1,    2,    3,    2}
    

    由于重复值可能出现在 V1 ?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Igor Tandetnik    6 年前

    大致如下:

    st::vector<int> v2(v1.size());
    std::iota(v2.begin(), v2.end(), 0);
    std::sort(v2.begin(), v2.end(),
      [&](int pos1, int pos2) {
        return std::tie(v1[pos1], pos1) < std::tie(v1[pos2], pos2);
      }
    );
    std::transform(v2.begin(), v2.end(), v2.begin(),
      [&](int pos) { return index[pos]; }
    );
    

    Demo