#c
#c
Вопрос:
если, например, у меня есть этот код:
#include lt;iostreamgt; #include lt;setgt; #include lt;vectorgt; using namespace std; //To be used for random values for this example int randInt(int min, int max) { return rand() % (max - min 1) min; } int main() { vectorlt;setlt;intgt; gt; nums; for (int i = 0; i lt; 5; i ) { setlt;intgt; s; int x = 0; int y = 0; for (int j = 0; j lt; 5; j ) { x = y 1; y = 15; pairlt;setlt;intgt;::iterator, boolgt; isUsed = s.insert(randInt(x, y)); while (isUsed.second) { isUsed = s.insert(randInt(0, 100); } } nums.push_back(s); } return 0; }
возможно ли, чтобы первое значение первой строки совпадало с первым значением второй строки? Если это так, есть ли простой способ исправить это, потому что я пытаюсь сделать что-то, что использует это, и я пытаюсь собрать столбцы в набор, вставить значения, чтобы заменить любые дублированные значения, которые были удалены, вернуть значения столбцов в их строки, что делает мой код немного длиннее, чем мне бы хотелось (для этого я использовал три вложенных цикла for, я даже не закончил их, прежде чем решил, что это становится слишком длинным, не говоря уже о том, что все было внутри них)
Комментарии:
1. Почему бы и нет? Каждый набор, хранящийся в векторе, независим от других наборов.
2. Создайте два набора, один для хранения по строкам (как вы это сделали), и один, в котором хранится все, чтобы вы могли проверить, уникален ли каждый элемент или нет (просто удалите его в конце).
3. Кстати, вам просто нужно проверить, что каждый элемент «глобального»
set
уникален4. @tony_merguez как бы это выглядело? Подождите, я только что перечитал ваш комментарий, это действительно помогает.