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

Автор Khina, история, 9 лет назад, По-русски

Здравствуйте! Поза вчера я решал одну задачку. Придумал решение и начал писать код. Во время кода я использовал set...
Но вот проблема я хотел сделать set with pair как на рисунке.

Зеленые это элементы в set-e S(назовем elset(элемент set-a)), а красные это элементы elseta. Помогите как это реализовать, заранее спасибо!

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

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

Если тип всех вершин – int, то, может быть, подойдет map

map<int, pair<int, int> > st;
st[3] = make_pair(1, 2); // положить для тройки пару (1, 2)
pair<int, int> p = st[2]; // достать пару, соответствующую двойке
»
9 лет назад, # |
  Проголосовать: нравится +13 Проголосовать: не нравится

map<int, pair<int,int>> либо set<pair<int, pair<int,int>> , судя по странному рисунку.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +6 Проголосовать: не нравится

    Огромное спасибо!

  • »
    »
    9 лет назад, # ^ |
    Rev. 3   Проголосовать: нравится +13 Проголосовать: не нравится

    Простите а не могли вы помочь мне с этим

    set <pair < int, pair <int, int> > > s;

    s.insert(make_pair(3, make_pair(2, 2))); // назовем это первым вхождением s.insert(make_pair(5, make_pair(2, 0))); // назовем это вторым вхождением

    а теперь, как мне изменить значения элемента первого вхождение(Красные на рисунке)?

    • »
      »
      »
      9 лет назад, # ^ |
      Rev. 5   Проголосовать: нравится +16 Проголосовать: не нравится

      s.erase(make_pair(3, make_pair(2, 2)));

      s.insert(make_pair(3, make_pair(x, y)));

      :) А ещё как-то можно?

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

        Решил эту задачу с set with pair-ом
        Код

        #include<iostream>
        using namespace std;
        int main(){
        return "Огромное спасибо еще раз!";
        }