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

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

Войти
Регистрация
Восстановить пароль
 
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
#1

Вектор с указателями - C++

25.12.2012, 19:15. Просмотров 381. Ответов 6
Метки нет (Все метки)

Доброго времени суток, есть такой код:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// 1159.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
#include <functional>
#include <vector>
#include <algorithm>
#include <iostream> 
 
 
class ABC
{
 
    public:
        ABC( int a, int b, int c )
        {
            m_a = a;
            m_b = b;
            m_c = c;
        }
 
        bool AsA( int a ) 
        {
            return m_a == a;
        }
 
        bool AsB( int b )
        {
            return m_b == b;
        }
 
        bool AsC( int c ) 
        {
            return m_c == c;
        }
 
    protected:
        int m_a;
        int m_b;
        int m_c;
};
 
using namespace std;
 
int main()
{
    vector<ABC> v;
    v.push_back( ABC( 1, 2, 3 ) );
    v.push_back( ABC( 4, 5, 6 ) );
    v.push_back( ABC( 7, 8, 9 ) );
 
    vector<ABC>::iterator it;
 
    it = find_if(v.begin(), v.end(), bind2nd((mem_fun1_ref(&ABC::AsB)), 5));
 
    if ( it != v.end() )
        cout << "AsB(5) found\n";
    else
        cout << "AsB(5) not found\n";
 
        return 0;
}
Все прекрасно работает, но преподаватель сказал сделать вектор с указателями на класс. Я сделал так:

C++
1
vector<ABC*> v;
то выдает ошибку
C++
1
error C2664: 'std::vector<_Ty>::push_back' : cannot convert parameter 1 from 'ABC' to 'ABC *const &'
Я понимаю что ошибка из-за указателя появилась, но как убрать ошибку используя вектор с указателями... Заранее благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 19:15     Вектор с указателями
Посмотрите здесь:

Вектор с указателями на объекты - C++
Всем привет! Решил разобраться с векторами. Написал программку. На выводе ожидал увидеть 10 случайных числ. Но получаю краш приложения....

можно ли в вектор добавить вектор? - C++
не сложить, а добавить? например, даны такие векторы: std::vector&lt;glm::vec2&gt; myVector; и vector&lt;вот тут какой тип делать?&gt;...

Работа с указателями - C++
Написать программу, в которой выполнить следующие действия: 1) Описать указатели на все известные типы данных; 2. Выполнить для каждого...

Непонятки с указателями - C++
#include &lt;iostream&gt; using namespace std; int is_order(const int* array) { for(const int* z = array; z &lt; array +...

Работа с указателями - C++
Помогите пожалуйста объяснить, не понимаю почему число присваемое через указатель *А в кавычках, и равны ли *А и просто А??? char *A =...

Программа с «указателями» - C++
Всем привет! Ребят, требуется сдать последнюю программу на этот семестр, нужно написать прогу при помощи указателей, единственный человек...

Прикол с указателями - C++
взял пример с http://www.cplusplus.com/reference/algorithm/find/, немного поэксперементировал и наткнулся на необъяснимый факт) Смотрим: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
509 / 461 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
25.12.2012, 19:33     Вектор с указателями #2
Цитата Сообщение от yoghurt92 Посмотреть сообщение
выдает ошибку
А push_back() ты как делаешь?

Если у тебя вектор указателей, то для каждого элемента нужно будет выделить память, грубо говоря:

C++
1
v.push_back(new ABC( 1, 2, 3 ) );
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.12.2012, 20:50  [ТС]     Вектор с указателями #3
теперь выдает
C++
1
error C2664: 'bool std::binder2nd<_Fn2>::operator ()(ABC &) const' : cannot convert parameter 1 from 'ABC *' to 'ABC &'
...
Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
25.12.2012, 22:26     Вектор с указателями #4
Должно быть так
C++
1
2
vector<ABC*>::iterator it;
it = find_if(v.begin(), v.end(), bind2nd((mem_fun1(&ABC::AsB)), 5));
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.12.2012, 23:17  [ТС]     Вектор с указателями #5
Nagdiel, спасибо вам большое, а Вы не могли посоветовать литературы по STL? Буду очень благодарен!
Nagdiel
114 / 114 / 3
Регистрация: 23.12.2012
Сообщений: 195
25.12.2012, 23:54     Вектор с указателями #6
У Страуструпа довольно много написано про STL.

Вот еще пара справочников

Дэвид Р. Мюссер, Жилмер Дж. Дердж, Атул Сейни
C++ и STL. Справочное руководство, Вильямс, 2010

Мэтью Г. Остерн
Обобщенное программирование и STL. Использование и наращивание стандартной библиотеки шаблонов C++, Невский диалог, 2004



А тут советы и практические приемы использования:

Скотт Мейерс: Эффективное использование STL, Питер 2002

Все сам её собираюсь почитать, руки только не доходят)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2012, 00:17     Вектор с указателями
Еще ссылки по теме:

Не получается с указателями :( - C++
Программа считывает строки из файла и суммирует строки в строку str_new, при это создавая указатели на каждую новую строку которая была...

пример с указателями - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include &lt;clocale&gt; #include &lt;cmath&gt; using namespace std; double sumA(int *y,int d) {...

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

работа с указателями - C++
Как ПРАВИЛЬНО передать в функцию, массив, используя адресацию? Программа находит в массиве слово и перед ним вставляет какое то слово, то...

Работа с указателями - C++
1. Написать функцию, принимающую в качестве параметра указатель на первый символ строки и возвращающую адрес первого символа этой же...


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

Или воспользуйтесь поиском по форуму:
yoghurt92
374 / 345 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
26.12.2012, 00:17  [ТС]     Вектор с указателями #7
да я только вот тронул STL и сразу чувствую, что нужно запастись справочной литературой)
Yandex
Объявления
26.12.2012, 00:17     Вектор с указателями
Ответ Создать тему
Опции темы

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