Блог пользователя manvscode

Автор manvscode, история, 7 лет назад, По-английски

How to define triplet vectors. I tried {pair<int,pair<int,int>>} but push_back,sort,begin, end are not working with them. Please help.

  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

»
7 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

For vector<pair<int, pair<int, int>>> all those operations should work.

vector<tuple<int, int, int>> is an alternative.

For further help you need to post your code.

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится +10 Проголосовать: не нравится

May be create custom structure with comparator? pair<int,pair<int,int>> is ugly.

struct my {
    int x, y, z;
    my () {}
    my (int x, int y, int z) : x(x), y(y), z(z) {}

    bool operator < (const my &other) const {
        if (x != other.x) return x < other.x;
        if (y != other.y) return y < other.y;
        return z < other.z;
    }
    // also for ==, > if needed.
};

std::vector<my> a;
a.push_back(my(1,2,3));
a.emplace_back(4, 5, 6); // i. e. a.push_back(my(4, 5, 6)), C++11
sort(a.begin(), a.end());