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

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

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

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

04.06.2011, 02:48. Просмотров 1299. Ответов 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++ В массиве A(n) удалить все отрицательные числа ,затем массив упорядочить по убыванию
Удалить из очереди все отрицательные числа C++
C++ Удалить из очереди все отрицательные числа
C++ Удалить из отсортированного вектора, числа которые являются "квадратными"
Удалить из очереди все отрицательные числа C++
Удалить все отрицательные компоненты вектора C++
C++ Как получить случайные отрицательные числа
Скопировать из исходного вектора положительные элементы в один массив, а отрицательные - в другой C++
Как настроить Dev-C, чтобы отрицательные числа в дополнительном коде C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт С++
 Аватар для grizlik78
1890 / 1422 / 104
Регистрация: 29.05.2011
Сообщений: 2,977
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
Эксперт С++
 Аватар для grizlik78
1890 / 1422 / 104
Регистрация: 29.05.2011
Сообщений: 2,977
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     как из вектора удалить отрицательные числа
Ответ Создать тему
Опции темы

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