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

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

Восстановить пароль Регистрация
 
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.12.2012, 19:15     Вектор с указателями #1
Доброго времени суток, есть такой код:

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++ Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы
Вектор с указателями на объекты C++
Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы C++
контейнер -вектор вложеный в вектор C++
C++ Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 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
373 / 344 / 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
 Аватар для 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
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.12.2012, 23:17  [ТС]     Вектор с указателями #5
Nagdiel, спасибо вам большое, а Вы не могли посоветовать литературы по STL? Буду очень благодарен!
Nagdiel
 Аватар для 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++ задан вектор С, который состоит из 12 действительных чисел. Сформировать вектор D, нечетные элементы которого есть целая часть нечетных
Считать вектор из файла, записать вектор в файл C++
C++ Вектор ссылок и вектор указателей

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

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

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