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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Leff
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 23
#1

как из вектора удалить отрицательные числа - C++

04.06.2011, 02:48. Просмотров 1462. Ответов 4
Метки нет (Все метки)

Создать вектор, заполнить его случайными целыми числами в интервале от -10 до 10. Вывести в ListBox. Затем удалить из него все отрицательные элементы и вывести еще раз вектор в ListBox.

moja programma

vector<int>vec;
srand(time(NULL));
for(int i=0,i!=10,i++){
int a=rand()%20-10;
vec_push_back(a);
listBox1->item->Add(vec[i]);}
как найти и удалить из вектора отрицательные числа
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2011, 02:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос как из вектора удалить отрицательные числа (C++):

Удалить все отрицательные компоненты вектора - C++
дано а(5) b(10) преобразовать вектор с наименьшим min по правилу: все отрицательные компоненты вектора удалить. в программе турбо си ++

если массив не является знакочередующимся,то удалить из массива все положительные числа,в противном случае-удалить отрицательные элементы.после удален - C++
задан массив Х целых чисел. если массив не является знакочередующимся,то удалить из массива все положительные числа,в противном...

Удалить из очереди все отрицательные числа - C++
Создать однонаправленную очередь с числами в диапазоне от –50 до +50. После создания очереди выполнить индивидуальное задание. В конце...

Удалить из очереди все отрицательные числа - C++
С++. Удалить из очереди все отрицательные числа. Помогите пожалуйста.

Удалить из очереди все отрицательные числа - C++
Удалить из очереди все отрицательные числа.

Кольцевой односвязный список, удалить из него все отрицательные числа - C++
Здравствуйте, необходимо решить проблему в задаче: &quot;Сформулируйте кольцевой список с вещественным информационным полем и удалите из него...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
grizlik78
Эксперт С++
1911 / 1443 / 112
Регистрация: 29.05.2011
Сообщений: 3,000
04.06.2011, 03:02 #2
если использование алгоритмов не запрещено
C++
1
2
3
4
#include <functional>
#include <algorithm>
 
vec.erase(remove_if(vec.begin(), vec.end(), bind2nd(less<int>(),0)), vec.end());
0
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
04.06.2011, 03:12 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <iterator>
 
using namespace std;
 
int main ()
{
   vector<int> vec(10);
   
   srand(time(NULL));
   
   for(auto &i : vec)
   {
      i = rand()%20-10;       
   }
   
   copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));    
 
   cout<<endl;
   
   vec.resize(remove_if(vec.begin(), vec.end(), bind2nd(less<int>(),0)) - vec.begin());
   
   cout<<endl;
   
   copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " ")); 
   
   return 0;
}
0
Leff
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 23
04.06.2011, 03:13  [ТС] #4
можно объяснить эту строчку
0
grizlik78
Эксперт С++
1911 / 1443 / 112
Регистрация: 29.05.2011
Сообщений: 3,000
04.06.2011, 03:24 #5
remove_if удаляет в интервале от vec.begin() до vec.end() все элементы, для которых является истинным предикат less
эта функция лишь сдвигает неудалённые элементы к началу и возвращает новый конец данных, который используется как начало интервала для реального удаления функцией erase
less возвращает истину, если первый операнд (элемент вектора) меньше второго. чтобы задать второй операнд равным нулю используется адаптер bind2nd

Добавлено через 3 минуты
ну а вариант gooseim отличается лишь тем, что вместо erase для удаления лишних элементов используется resize
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.06.2011, 03:24
Привет! Вот еще темы с ответами:

В массиве A(n) удалить все отрицательные числа ,затем массив упорядочить по убыванию - C++
В массиве A(n) удалить все отрицательные числа ,затем массив упорядочить по убыванию.

В массиве целых чисел удалить все отрицательные числа; найти сумму всех элементов до и после преобразования - C++
С использованием функций и динамических массивов cоставить следующую задачу: В массиве целых чисел T(N) удалить все отрицательные...

Удалить из отсортированного вектора, числа которые являются "квадратными" - C++
Добрый день! Есть вопросы по некоторым функциям, помогите плиз. Вот допустим у меня идет сортировка вектора по убыванию, но не пойму...

Как удалить строку/столбец из двумерного вектора? - C++
Прошу помощи. До самого не доходит. Имеем вектор v . std::vector&lt;std::vector&lt;int&gt; &gt; v( N, std::vector&lt;int&gt;M); Как с помощью функции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.06.2011, 03:24
Ответ Создать тему
Опции темы

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