Форум программистов, компьютерный форум CyberForum.ru

Не может удалить элемент из вектора - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить класс для рациональных чисел http://www.cyberforum.ru/cpp-beginners/thread664491.html
Начало изучения понятия класса и объекта в С++, для меня много не ясного. Помогите, пожалуйста. Задача: необходимо Определить класс (Rational) для рациональных чисел. Рациональное число - число кот может быть представлено как отношение двух целых чисел: 1/2, 3/4, 64/2 и т.д. Включить конструктор с 2 аргументами, кот может быть использован для установления member переменных объекта с любыми...
C++ не проходит инцилизация вектора #include <iostream> #include <vector> #include <ctime> // function RandomInitializationVector void PrintElementVector(std::vector <int> vector); void RandomInitializationVector(std::vector <int> vector, int size); int main() { std::cout << "Test Vector" << std::endl << std::endl; http://www.cyberforum.ru/cpp-beginners/thread664480.html
C++ Программа, которая помогает найти число х между 0 и 1000
Программа, которая помогает найти число х между 0 и 1000. Это число х выбирается программой. Использовать функцию rand. Когда вводишь число, программа должна сказать "слишком большое" или "слишком маленькое", либо "угадал"! И еше она должна подсчитивать число попыток. помогите написать! Ниче не получается
Вектор C++
Заполните вектор случайными числами. Напишите вывод на экран. Отсортируйте вектор. Напишите функцию, которая удалит из вектора все простые числа. Напишите функцию, которая копирует все простые числа из одного вектора в другой. как это можно реализовать?
C++ Вычислить значение функции http://www.cyberforum.ru/cpp-beginners/thread664425.html
Ребят помогите написать код двух задач. Задача 1 Роздилите абитуриентов, что выдержали конкурс, между двумя группами с ближайшим количественным составом. Задача 2 Заданно значение функции sin(a). Вычислить главное значение аргумента этой функции в градусах. Добавлено через 15 часов 42 минуты Ну что ребят ктонибудь знает как написать код к этим задачам???
C++ Как правильно обьявить геометрические точки? Здраствуйте! Задача стоит такая : Добавить геометрическую точку с указанными координатами. (х у) Отсортировать геометрические точки в сторону увеличения расстояния от начала координат. Теперь основной вопрос : как правильно обьявить точку, для последующей сортировки ( по гипотенузе ), а также обращения к етой точке. Дополнительный, необязательный вопрос : для дальнейшего удаления етой точки... подробнее

Показать сообщение отдельно
-=ЮрА=-
Заблокирован
Автор FAQ
06.10.2012, 10:37     Не может удалить элемент из вектора
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
for (i = 0; i < limit; ++i)
* {
* * *if(Resheto_Atkina(vec[i]))
* * *{
* * * * vec.erase(vec.begin() + i);
* * *}
* }
- сама концепция удалять от начала неверна итак поясняю скажем есть вектор со значениями
1 5 16 23 11 т.е 5-ть значений
Так вот скажем
Цитата Сообщение от KostyaKulakov Посмотреть сообщение
if(Resheto_Atkina(vec[i]))
должны удалить сначала 3-й элемент а затем 5й, что ж смотрим отработку
Удаление 3-го элемента
было
1 5 16 23 11
vec.erase(vec.begin() + 2); стало 1 5 23 11 и хотим удалить 5-й элемент, ха а сколько элементов сейчас в векторе, м?
Тут два варианта решения - 1-й удалять от конца, 2-й при удалении не забывать уменьшать счётчик, т.к. в векторе значений стало на 1 меньше, да и в условии окончания изменить с
C++
1
for (i = 0; i < limit; ++i)
на
for (i = 0; i < vec.size(); ++i)
т.к. размер вектора динамически меняется!Вобщем вот вариант возможного решения
f
or (i = 0; i < vec.size(); i++)//Проверять по факт-му размеру вектора!
{
if(Resheto_Atkina(vec[i]))
{
vec.erase(vec.begin() + i);
i--;//Очень важный момент
}
}

Не по теме:

От себя : не рекомендую использовать префиксные инк/дек

 
Текущее время: 16:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru