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

Указатель на std::vector - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Intel раздаёт библиотеки по Community лицензии http://www.cyberforum.ru/cpp-beginners/thread1520260.html
Тема носит информативный характер. Представитель компании Intel на всем известном ресурсе заявил о выходе Community-версий следующих библиотек: Intel® Math Kernel Library (Intel® MKL) Intel® Data Analytics Acceleration Library (Intel® DAAL) Intel® Integrated Performance Primitives (Intel® IPP) Т.е. сейчас Вы их можете скачать и использовать абсолютно бесплатно. Подробности программы на...
C++ Вывод строк в случайном порядке Здраствуйте. Нужно выводить строки в случайном порядке неопределенное количество раз. Т.е. к примеру, я создам переменных типа string и вот содержимое этих переменных нужно выводить в случайном порядке. Не прошу код, просто как это реализовать? что использовать? функции какие-то? http://www.cyberforum.ru/cpp-beginners/thread1520242.html
C++ Не создается файл
#include "iostream" #include "ctime" #include "cstdlib" #include "string.h" #include "fstream" using namespace std; class create{ public: void createfile(){ ofstream ofs("C://Пользователи/User/Рабочий стол/file.txt");
C++ В классе Date сделать так, чтобы IncrementDate принимал параметром отрицательное значение
Используйте класс Date. Он принимает число дней в диапазоне 0-365, добавляет его к текущей дате и возвращает объект, имеющий новую дату. Сделайте так, чтобы параметр для IncrementDate мог принимать отрицательные значения. Помогите разобраться. Получается, у нас есть в классе текущая дата, переменная, отвечающая за прибавление дней, и IncrementDate - результат сложения. Получается так, или я...
C++ Что означает node*& ? http://www.cyberforum.ru/cpp-beginners/thread1520227.html
void del_all(node*& r) //удаление всех узлов { if (!r) return; del_all(r->left); del_all(r->right); delete r; r = NULL; }Подскажите, пожалуйста, что означает "*&"?
C++ Как инициализировать переменные? Здравствуйте. Где можно полно осведомиться о том как инициализируются переменные в C++ для каждого типа? подробнее

Показать сообщение отдельно
rikimaru2013
C++ Game Dev
2399 / 1093 / 237
Регистрация: 30.11.2013
Сообщений: 3,620

Указатель на std::vector - C++

26.08.2015, 18:26. Просмотров 432. Ответов 12
Метки (Все метки)

Добрый вечер,

всегда боялся передавать доступ к std::vector'y класса через:
1) указатель на контейнер
2) ссылка на контейнер
3) константная копия контейнера


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
#include <iostream>
#include <vector>
using namespace std;
 
class A
{
public:
    typedef std::pair<int, float> SOME_COOL_VALUE_NAME;
    typedef std::vector<SOME_COOL_VALUE_NAME> SOME_COOL_NAME;
 
private:
    SOME_COOL_NAME              m_arr;
public:
    SOME_COOL_NAME*             getPointOnArr()
    {
        return &m_arr;
    }
    SOME_COOL_NAME&             getRefArr()
    {
        return m_arr;
    }
 
    void                        setNewValue( SOME_COOL_VALUE_NAME newVal )
    {
        m_arr.push_back( newVal );
    }
};
 
void    process( A::SOME_COOL_NAME* arrPoint )
{
    for(auto& it : *arrPoint)
    {   
        cout << "getted like point:  " << it.first << " " << it.second << endl;
    }
}
void    process2( A::SOME_COOL_NAME& arrPoint )
{
    for(auto& it : arrPoint)
    {
        cout << "getted line ref:  " << it.first << " " << it.second << endl;
    }
}
int main()
{
    A a;
    a.setNewValue( { 12, 3.02 } );
    process( a.getPointOnArr() );
    process2( a.getRefArr( ) );
    
}

Мои аргументы, что не давали мне этого сделать:
1) внутреняя реализация класса А, его "основной" икапсулируемых класс-мембер может быть изменён без его ведома.


Для чего мне нужно: - иногда так хочется дать указатель, чтобы другой порылся в контейнере - нашёл себе что искал и сохранил указатель на тот найденный объект.
Сейчас: - через 3 класса прокидываю
C++
1
shared_ptr<T> getPointer(SeachStructParametres asker);
Посуте не смогу затереть указатель этот так как в контейнере останется на него умный указатель - что является защитой от минуса описанного выше, могу лишь выставить флаг, что сообщит в дальнейшем классу владельцу контейнера, что данный экземпляр должен умереть!! *тут_зловестный_смех*
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru