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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Leff
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 23
04.06.2011, 02:48     как из вектора удалить отрицательные числа #1
Создать вектор, заполнить его случайными целыми числами в интервале от -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]);}
как найти и удалить из вектора отрицательные числа
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2011, 02:48     как из вектора удалить отрицательные числа
Посмотрите здесь:

C++ если массив не является знакочередующимся,то удалить из массива все положительные числа,в противном случае-удалить отрицательные элементы.после удален
C++ В массиве A(n) удалить все отрицательные числа ,затем массив упорядочить по убыванию
Удалить из очереди все отрицательные числа C++
C++ Удалить из очереди все отрицательные числа
C++ Удалить из отсортированного вектора, числа которые являются "квадратными"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
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());
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
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;
}
Leff
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 23
04.06.2011, 03:13  [ТС]     как из вектора удалить отрицательные числа #4
можно объяснить эту строчку
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
04.06.2011, 03:24     как из вектора удалить отрицательные числа #5
remove_if удаляет в интервале от vec.begin() до vec.end() все элементы, для которых является истинным предикат less
эта функция лишь сдвигает неудалённые элементы к началу и возвращает новый конец данных, который используется как начало интервала для реального удаления функцией erase
less возвращает истину, если первый операнд (элемент вектора) меньше второго. чтобы задать второй операнд равным нулю используется адаптер bind2nd

Добавлено через 3 минуты
ну а вариант gooseim отличается лишь тем, что вместо erase для удаления лишних элементов используется resize
Yandex
Объявления
04.06.2011, 03:24     как из вектора удалить отрицательные числа
Ответ Создать тему
Опции темы

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