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

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

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

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

18.04.2012, 23:53. Просмотров 688. Ответов 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() в массиве.
Посмотрите здесь:

C++ vector.erase
list не работает erase C++
C++ vector::erase()?
C++ вектор алгоритм erase
std::vector::erase C++
C++ stl::list erase()
C++ Реализация функции erase()
Функция Erase класса vector C++
Не правильно работает erase + remove C++
Шаблоны: insert, erase C++
C++ Vertor erase iterator outside range
Erase map C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.04.2012, 00:32     .erase() в массиве. #2
Цитата Сообщение от Sade Посмотреть сообщение
k[i].second мне надо его удалить как воспользоваться функции k.erase() ; ?????
erase к pair вообще никакого отношения не имеет.
Avazart
7065 / 5242 / 262
Регистрация: 10.12.2010
Сообщений: 23,062
Записей в блоге: 17
19.04.2012, 01:15     .erase() в массиве. #3
C++
1
k.erase(итератор на элемент вектора!)
именно вектора а не pair, pair не является контейнером чтоб у него можно было удалять что -либо
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