Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

25.12.2012, 19:15. Просмотров 419. Ответов 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 &'
Я понимаю что ошибка из-за указателя появилась, но как убрать ошибку используя вектор с указателями... Заранее благодарю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 19:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вектор с указателями (C++):

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

Класс "вектор" с конструкторами, позволяющими создать нулевой вектор и вектор с произвольным числом элементов - C++
Привет! Задача следующая. Нужно реализовать класс &quot;вектор&quot; с конструкторами, которые позволяют создать нулевой вектор и вектор с...

Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы - C++
Создать иерархию классов вектор и безопасный вектор с проверкой выхода за пределы. Безопасный вектор определяет переменные нижний и верхний...

Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb. - C++
Привет. Не могу разобратся, вот задание: Есть квадратная матрица А порядка n и вектор b с n элементами. Получить вектор Аb.

матрица на вектор, вроде правильно, а вектор на матрицу? посмотрите пожалуйста? - C++
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main() { ...

Почему матрица на вектор умножается быстрее чем вектор на матрицу? - C++
Почему матрица на вектор умножается быстрее чем вектор на матрицу?

6
Schizorb
510 / 462 / 16
Регистрация: 07.04.2012
Сообщений: 869
Записей в блоге: 1
Завершенные тесты: 1
25.12.2012, 19:33 #2
Цитата Сообщение от yoghurt92 Посмотреть сообщение
выдает ошибку
А push_back() ты как делаешь?

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

C++
1
v.push_back(new ABC( 1, 2, 3 ) );
0
yoghurt92
375 / 346 / 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 &'
...
0
Nagdiel
115 / 115 / 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));
1
yoghurt92
375 / 346 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
25.12.2012, 23:17  [ТС] #5
Nagdiel, спасибо вам большое, а Вы не могли посоветовать литературы по STL? Буду очень благодарен!
0
Nagdiel
115 / 115 / 3
Регистрация: 23.12.2012
Сообщений: 195
25.12.2012, 23:54 #6
У Страуструпа довольно много написано про STL.

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

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

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



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

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

Все сам её собираюсь почитать, руки только не доходят)))
1
yoghurt92
375 / 346 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
26.12.2012, 00:17  [ТС] #7
да я только вот тронул STL и сразу чувствую, что нужно запастись справочной литературой)
0
26.12.2012, 00:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2012, 00:17
Привет! Вот еще темы с ответами:

Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы - C++
Помогите не знаю как сделать! Создать иерархию классов вектор(longint) и безопасный вектор с проверкой выхода за пределы. Безопасный...

Вектор с неизвестным количеством чисел преобразовать в другой вектор, где числа будут стоять по возрастанию - C++
Вектор с неизвестным количеством чисел нужно превратить в другой вектор, где числа будут стоять по возрастанию. Мне код не столько нужен,...

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

задан вектор С, который состоит из 12 действительных чисел. Сформировать вектор D, нечетные элементы которого есть целая часть нечетных - C++
задан вектор С, который состоит из 12 действительных чисел. Сформировать вектор D, нечетные элементы которого есть целая часть нечетных...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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