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

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

Войти
Регистрация
Восстановить пароль
 
Sade
2 / 2 / 1
Регистрация: 20.03.2012
Сообщений: 42
#1

.erase() в массиве. - C++

18.04.2012, 23:53. Просмотров 703. Ответов 3
Метки нет (Все метки)

есть массив вектор например:
vector< pair<char,int> > k;
k[i].second мне надо его удалить как воспользоваться функции k.erase() ; ?????
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2012, 23:53     .erase() в массиве.
Посмотрите здесь:

vector::erase()? - C++
есть вектор структур struct person{ string name; int age; vector &lt;person&gt; repw;

Erase map - C++
Добрый день, мне необходимо удалить из MAP некоторое количество элементов, сейчас я делаю это вот так, но как то не очень красиво for (i...

vector.erase - C++
Помогите пожалуйста с синтаксисом удаления любого элемента из вектора Вот тут ошибка: #include &lt;vector.h&gt; void main() { ...

вектор алгоритм erase - C++
Доброго всем времени суток.Пожалуйста подскажите чайнику.Пытаюсь из контейнера убрать лишние данные с помощью erase ,но ничего не...

Реализация функции erase() - C++
Как работает erase()? То есть, если у нас : prev, it, next - итераторы и выполняя erase(it), она очистит память, которую занимала it и...

stl::list erase() - C++
вот такой код есть, но не работает. как подправить? list&lt;int&gt; ls; list&lt;int&gt;::iterator it; for(int i=0; i&lt;5; i++) { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2540 / 1305 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.04.2012, 00:32     .erase() в массиве. #2
Цитата Сообщение от Sade Посмотреть сообщение
k[i].second мне надо его удалить как воспользоваться функции k.erase() ; ?????
erase к pair вообще никакого отношения не имеет.
Avazart
Эксперт С++
7122 / 5299 / 273
Регистрация: 10.12.2010
Сообщений: 23,449
Записей в блоге: 17
19.04.2012, 01:15     .erase() в массиве. #3
C++
1
k.erase(итератор на элемент вектора!)
именно вектора а не pair, pair не является контейнером чтоб у него можно было удалять что -либо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.04.2012, 01:34     .erase() в массиве.
Еще ссылки по теме:

list не работает erase - C++
void in_out_Park(list&lt;Bus&gt; &amp;in, list&lt;Bus&gt; &amp;out) { int n, i=0; Bus temp; cout&lt;&lt;&quot;Введите номер автобуса: &quot;; cin&gt;&gt;n; ...

Шаблоны: insert, erase - C++
У меня проблема, как именно нужно описать main и проблема с функцией insert, мне сказали, что в ней может не быть места, чтобы вставить...

Функция Erase класса vector - C++
Нужно удалить из вектора, в котором объекты авторского класса, объекты с весом более 300. Написал цикл, но при запуске пишет Iterators...

Не правильно работает erase + remove - C++
мне надо удалить из строки все пробелы, я сделал так: std::string expr; ... expr.erase(std::remove(expr.begin(), expr.end(), ' ')); ...

Vertor erase iterator outside range - C++
Всем привет! Пытаюсь разобраться с кодом алгоритма шифрования методом Хаффмана, и наткнулся на ошибку (скрин в приложении). Что в этом...

Крах при vector.erase() - C++
Всё вроде бы работает так, как мне надо...но когда остаётся 1 элемент и его нужно очистить, программа крашится. Что я сделал не так? ...


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

Или воспользуйтесь поиском по форуму:
NightmareZ
1339 / 562 / 37
Регистрация: 31.03.2009
Сообщений: 1,918
19.04.2012, 01:34     .erase() в массиве. #4
Цитата Сообщение от Sade Посмотреть сообщение
есть массив вектор например:
vector< pair<char,int> > k;
k[i].second мне надо его удалить как воспользоваться функции k.erase() ; ?????
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
32
33
34
35
36
37
#include <iostream>
#include <vector>
#include <utility>
#include <algorithm>
 
typedef std::pair<char, int> mypair;
typedef std::vector<mypair> myvec;
 
int main()
{
    std::vector<mypair> vec;
    vec.push_back(mypair('a', 1));
    vec.push_back(mypair('b', 2));
    vec.push_back(mypair('c', 3));
 
    // output:
    // a 1
    // b 2
    // c 3
    for (myvec::iterator it = vec.begin(); it != vec.end(); ++it)
        std::cout << it->first << " " << it->second << std::endl;
    std::cout << std::endl;
 
    const int target = 2;
    myvec::const_iterator it =
        std::find_if(vec.begin(), vec.end(), [&target](mypair pair) { return pair.second == target; });
    if (it != vec.end())
        vec.erase(it);
 
    // output:
    // a 1
    // c 3
    for (myvec::iterator it = vec.begin(); it != vec.end(); ++it)
        std::cout << it->first << " " << it->second << std::endl;
    std::cout << std::endl;
    return 0;
}
Yandex
Объявления
19.04.2012, 01:34     .erase() в массиве.
Ответ Создать тему
Опции темы

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