2016-08-19 3 views
0

Во-первых, вы можете задаться вопросом: Зачем вам нужно иметь два измерения, просто создайте два одномерных массива.
Ну, вот моя задача: пользователь вводит число запросов, а затем для каждого запроса он вводит идентификатор задачи, для ID = 0 мне нужно использовать первый массив ([] [0]) и для ID = 1 второй, было бы намного красивее, чтобы сделать это без утверждения (if (ID == 0)...blablabla).
Конечно, есть способ сделать это с помощью алгоритмов сортировки (пузырь, быстро ...), но я как бы любопытно: можно ли это сделать с помощью функции std::sort();?
Спасибо.
P.s. Вот краткий пример, чтобы уточнить:Сортируйте двухмерную матрицу без касания второго измерения

Я так сожалею, чтобы дать такой плохой пример, который я, м собирается изменить это, первый здесь идет данные, которые у меня есть

2 1 
14 5 
5 7 
3 45 ` 

поэтому мне нужно сортировать это следующим образом:

2 1 
3 5 
5 7 
14 45 

так, когда запросы вводятся, например, идентификатор = 1 число = 2 только выход array[2][1];

+1

Похоже, вам нужен мультимап, а не 2d-массив. – NathanOliver

+0

Я не уверен, что буду следовать за вами вопросами. Вы хотите знать, можете ли вы сортировать функцию sort()? Конечно вы можете. Проверьте это [ссылка] (http://www.cplusplus.com/reference/algorithm/sort/). –

+0

['std :: multimap'] (http://en.cppreference.com/w/cpp/container/multimap) (с ключом' int' и значением 'int') почти наверняка вы хотите использовать здесь как он по сути сортируется по ключевым словам и обеспечивает поиск логарифмической сложности. – ArchbishopOfBanterbury

ответ

1

Вы можете представить данные в виде структуры некоторого рода

struct data{ 
    int id; 
    int other_data; 
    ... 
}; 

Для сортировки только ID ...

{ 
    std::vector<data> my_vec; 
    //Populate my_vec 
    std::sort(my_vec.begin(), my_vec.end(), [](const data& d1, const data& d2){ 
    return d1.id < d2.id; 
    }); 
} 

Три преимущества:

  1. Если впоследствии нужно other_data_2 также оставаться упорядочено id, это тривиально, чтобы добавить его
  2. Вы можете избежать использования сложных многомерных массивов
  3. Вы можете избежать нас (с использованием векторов)
+0

Не будет ли это также сортировать 'other_data' в узлах данных? В этом коде «id» и «other_data» будут оставаться вместе, чего не хочет OP. –

+0

Хм, ты прав. Я не видел этого в своем примере, когда впервые посмотрел на него. ... – Altainia

Смежные вопросы