223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
1 | |
set_difference(vector<pair<int,int>>, vector<int>>09.10.2013, 20:23. Показов 2540. Ответов 15
Метки нет (Все метки)
Мне бы провести эту операцию по первому значению pair. Это реально сделать через STL или придется самому написать?
0
|
09.10.2013, 20:23 | |
Ответы с готовыми решениями:
15
Как считать данные в vector<pair<int, pair<int, int>>> arr(m) ? Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec Как удалить повторяющиеся элементы в vector<pair<int, int>> Применить accumulate к vector<pair<int, int>> |
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
09.10.2013, 20:55 | 2 |
Даже если будешь сам писать, как же ты собираешься определить отношения на смешанном множестве pair/int?
vector{pair{1, 0}, pair{1, 1}} - vector{1}} = ???
0
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
09.10.2013, 21:04 [ТС] | 3 |
0
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
09.10.2013, 21:15 [ТС] | 5 |
попробую "наклепать" ...
Добавлено через 5 минут есть вектор vec1. в нем находятся некие пары. сами пары строятся так: (некое значение, его индекс). сам vec1 будет меняться (через erase), поэтому мне нужны индексы. по поводу set_diff: грубо говоря нужно просмотреть в vec1 все некие значения с вектором vec2, и получается найти разность множеств, удалив при этом нужные элементы из vec1.
0
|
Заблокирован
|
||||||
09.10.2013, 21:37 | 6 | |||||
учись пока я жив
P.S.: выполнять операции, в том числе и сравнивать, с разнотипными элементами нельзя, то есть твой первый пост не прокатит
1
|
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
|
09.10.2013, 21:38 | 7 |
Если было два равных элемента, а во втором множестве один такой, то один в результате останется. Так что даже если там везде одни int'ы будут, это уже не set_difference
0
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
09.10.2013, 21:47 [ТС] | 8 |
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||
09.10.2013, 23:31 | 10 | |||||
Если вдуг есть boost.range, то
0
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
||||||
11.10.2013, 01:21 [ТС] | 11 | |||||
что-то не хочет...
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
11.10.2013, 01:30 | 12 |
mat_for_c, так ты пишешь в первый вектор, который хранит pair, а не int.
Добавлено через 3 минуты + ты бы затирал значения в vec1 в процессе, в итоге получилось бы непонятно что...
0
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|||||||||||
11.10.2013, 01:37 [ТС] | 13 | ||||||||||
ну мне и надо этот вектор урезать...
и потом:
Добавлено через 4 минуты а если
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
|
11.10.2013, 01:50 | 14 |
Это не будет работать правильно.
Вообще я по названию темы смотрел - std::set_difference работает так же, как и из boost, только вот штук наподобее map_keys в std нет... Можно писать во временный вектор, потом swap. Либо делать как ранее писали с find и erase, но там сложность будет уже не O(n + m), как у set_difference.
0
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
11.10.2013, 02:02 [ТС] | 15 |
0
|
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
|
||||||||||||||||
11.10.2013, 02:51 | 16 | |||||||||||||||
Вот с find и erase примерно так, O(n*m)
Как то так, на вскидку
Не по теме: Вроде бы казалось можно сделать так
Добавлено через 5 минут Кстати, в случае find + erase: учитывая, что последовательность vec2 отсортирована, можно заменить линейный поиск на бинарный (binary_search), тогда сложность упадёт до O(n*log(m))
1
|
11.10.2013, 02:51 | |
11.10.2013, 02:51 | |
Помогаю со студенческими работами здесь
16
Отсортировать vector< pair<int, int> > по значению error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>) vector < vector < pair<int,int> > > g Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |