Форум программистов, компьютерный форум, киберфорум
Наши страницы

Интересная особенность в работе вектора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти количество нулей в конце записи факториала числа http://www.cyberforum.ru/cpp-beginners/thread1576518.html
Найти количество нулей в конце записи факториала числа n. Подскажет, кто алгоритм? Или хотя бы в какую сторону копать? Если приведете пример кода, буду безмерно благодарен!
C++ Быстрый перебор восьмизначных чисел на С++ Доброго всем вечера, можете подсказать как с этим разобраться? Неободимо перебрать все числа от 1 до 12345678 и проверить что в каждом из них встречается по 1 разу каждая цифра http://www.cyberforum.ru/cpp-beginners/thread1576511.html
C++ Namespace и static-функция
1. Может ли определение static-функции быть вне-класса? Выдает ошибку, просит перенести в тело 2.Как в файле класса cpp, куда я скидываю определение функий, определить пространство имен или что то...
C++ Заполнить базу даных
Привет ребята, нужно заполнить базу данных информацыею про товар. Хочу через стринг. Мне получаеться нужно брать динамечиский масив и стринг?
C++ Разработать алгоритм определения координат опор линий С++ http://www.cyberforum.ru/cpp-beginners/thread1576470.html
задание! Разработать алгоритм определения координат опор линий!
C++ Dev C++ не компилирует Написал простейший "Hello World" в dev c++, нажимаю "Скомпилировать" (Ctrl+F9) вылетает окошко буквально на пару секунд, потом нажимаю "Отладка", пишет типа: "Проект не откомпилирован" что за ерунда?... подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.11.2015, 12:05
Цитата Сообщение от pproger Посмотреть сообщение
он модифицирует удаленные элементы. а не просто копирует.
С remove_copy_if я, конечно, погорячился. Однако элементы он не модифицирует:
Copies the elements in the range [first,last) to the range beginning at result, except those elements for which pred returns true.
Для условного переноса элементов из одного контейнера в другой нужно что-то такого вида:
C++
1
2
3
4
5
std::vector<int> v;
// ...
auto it = std::stable_partition(v.begin(), v.end(), pick_the_good_elements);
std::vector<int> w(std::make_move_iter(it), std::make_move_iter(v.end()));
v.erase(it, v.end());
Отсюда. Там же есть и другое решение.
Цитата Сообщение от pproger Посмотреть сообщение
есть мнение, что это implementation defined
Ошибочное мнение. 23.3.6.5/3:
Invalidates iterators and references at or after the point of the erase.
Т.о. до точки удаления итераторы и ссылки не портятся. Стало быть перевыделения быть не может.

Добавлено через 1 минуту
Цитата Сообщение от gru74ik Посмотреть сообщение
бороться с тем, что итераторы становятся невалидными?
Не допускать соответствующих действий.
Насчет инвалидации много полезного тут.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru