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

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

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

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

04.06.2011, 02:48. Просмотров 1395. Ответов 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]);}
как найти и удалить из вектора отрицательные числа
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2011, 02:48     как из вектора удалить отрицательные числа
Посмотрите здесь:
Удалить все отрицательные компоненты вектора C++
C++ если массив не является знакочередующимся,то удалить из массива все положительные числа,в противном случае-удалить отрицательные элементы.после удален
Удалить из очереди все отрицательные числа C++
C++ Удалить из очереди все отрицательные числа
Удалить из очереди все отрицательные числа C++
Кольцевой односвязный список, удалить из него все отрицательные числа C++
C++ В массиве A(n) удалить все отрицательные числа ,затем массив упорядочить по убыванию
В массиве целых чисел удалить все отрицательные числа; найти сумму всех элементов до и после преобразования C++
C++ Удалить из отсортированного вектора, числа которые являются "квадратными"
Как удалить строку/столбец из двумерного вектора? C++
C++ Как получить случайные отрицательные числа
C++ Все отрицательные элементы вектора заменить их квадратами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
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
Эксперт С++
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;
}
Leff
0 / 0 / 0
Регистрация: 15.11.2010
Сообщений: 23
04.06.2011, 03:13  [ТС]     как из вектора удалить отрицательные числа #4
можно объяснить эту строчку
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
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     как из вектора удалить отрицательные числа
Ответ Создать тему
Опции темы

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