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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
#1

shared_ptr и vector - C++

27.07.2013, 12:48. Просмотров 1772. Ответов 10
Метки нет (Все метки)

почему в vector нельзя засунуть shared_ptr ?
c:\qt\tools\mingw48_32\lib\gcc\i686-w64-mingw32\4.8.0\include\c++\ext\new_allocator.h|120|error: use of deleted function 'boost::shared_ptr<Ncom_din_un::Cdinamic_unit>::shared_ptr(const boost::shared_ptr<Ncom_din_un::Cdinamic_unit>&)'|

Добавлено через 31 секунду
C++
1
2
3
4
5
#if __cplusplus >= 201103L
      template<typename _Up, typename... _Args>
        void
        construct(_Up* __p, _Args&&... __args)
    { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2013, 12:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос shared_ptr и vector (C++):

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main - C++
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt;...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>) - C++
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало интересно, как нужно изменить программу...

Ошибка [Linker error] undefined reference to `Vector::Vector(int)' - C++
Добрый день. Делал по методички, и почему-то валятся ошибки... файл lab9_main.cpp #include &lt;iostream&gt; #include &quot;Vector.h&quot; int...

vector<Struct2{int,vector<struct1>}> или множественное наследование ... - C++
Здравствуйте! Помогите, пожалуйста. Есть такие данные: typedef struct { int x; int y; // координаты...

Указатель на объект вектор в векторе vector < vector<int>* >* - C++
Дело касается вот чего, есть такая вот незатейлевая вещь. #include &lt;vector&gt; #include &lt;iostream&gt; int main( ) { using...

Как корректно скопировать vector в vector внутри класса - C++
Есть класс принимающий в конструкторе vector: class test { test(std::vector&lt;std::string&gt; codeList); ~test(); ...

10
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,069
27.07.2013, 12:48 #2
Код?
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
27.07.2013, 12:50  [ТС] #3
C++
1
2
3
      boost::shared_ptr<Ncom_din_un::Cdinamic_unit> q;
        std::vector< boost::shared_ptr<Ncom_din_un::Cdinamic_unit>> w;
        w.push_back(q);
0
nonedark2008
925 / 664 / 142
Регистрация: 28.07.2012
Сообщений: 1,808
27.07.2013, 12:53 #4
Цитата Сообщение от Van111 Посмотреть сообщение
почему в vector нельзя засунуть shared_ptr ?
Легко влезло:
C++
1
2
3
vector<boost::shared_ptr<int>> v;
boost::shared_ptr<int> a;
v.push_back(a);
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
27.07.2013, 13:02  [ТС] #5
Цитата Сообщение от nonedark2008 Посмотреть сообщение
vector<boost::shared_ptr<int>> v;
boost::shared_ptr<int> a;
v.push_back(a);
у меня ругается, ИСПОЛЗУЮ mingw 4.82 из Qt Creator, стандарт с++ 11

Добавлено через 6 минут
nonedark2008, вы используете стандарт 98 года(проверил)
0
nonedark2008
925 / 664 / 142
Регистрация: 28.07.2012
Сообщений: 1,808
27.07.2013, 13:05 #6
Цитата Сообщение от Van111 Посмотреть сообщение
вы используете стандарт 98 года(проверил)
Они обратно совместимы, если мне не изменяет память. Какая версия boost стоит?
0
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
27.07.2013, 13:09  [ТС] #7
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Какая версия boost стоит?
1_39 из Borland 2010 (в этом проблемма ?)
0
nonedark2008
925 / 664 / 142
Регистрация: 28.07.2012
Сообщений: 1,808
27.07.2013, 13:27 #8
Цитата Сообщение от Van111 Посмотреть сообщение
в этом проблемма ?
Я считаю, что да. Обнови версию(лишним не будет) и посмотри что получится.
1
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,069
27.07.2013, 13:46 #9
Проблема возникает по двум причинам:
1) boost 1.39
2) С++11.

Если у класса есть move-конструктор или оператор присваивания, то конструктор копирования неявно удаляется. Именно это и происходит. Соответственно, если взять новый буст или убрать опцию -std=c++11, то будет работать.

PS Если уж используем 11 стандарт, почему бы не взять std::shared_ptr?
1
Van111
209 / 188 / 4
Регистрация: 03.08.2011
Сообщений: 2,597
Записей в блоге: 12
27.07.2013, 14:01  [ТС] #10
Цитата Сообщение от 0x10 Посмотреть сообщение
PS Если уж используем 11 стандарт, почему бы не взять std::shared_ptr?
спасибо, выручил, от чего то я думал что это одно и тоже (просто расфасовано по разному) . Функционал у них похож?
0
0x10
2475 / 1648 / 247
Регистрация: 24.11.2012
Сообщений: 4,069
27.07.2013, 14:03 #11
Van111, одно и то же, только между собой они не особо совместимы - нужно использовать всегда что-то одно.
1
27.07.2013, 14:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2013, 14:03
Привет! Вот еще темы с ответами:

Записать числа из файла в двумерный массив или вектор вроде такого vector<vector<int>> - C++
Добрый день, подскажите пожалуйста как лучше и проще считывать файл. в файле записаны числа, разделенные пробелами и запятыми: 1, 2, 3,...

При include<vector> не включает и не видит vector - C++
Не видит vector: //--ClassNeuron.h #ifndef NEURON_H #define NEURON_H #include &lt;cstdlib&gt; #include...

Struct / Vector / Expression: vector subscript out of range - C++
Добрый вечер. Имеется структура: struct Contact { public: string name; vector&lt;string&gt; phoneNumber; };

Записать vector<vector<wchar_t>> в текстовый файл - C++
Подскажите пожалуйста, как записать vector&lt;vector&lt;wchar_t&gt;&gt; в файл. Файл необходимо открывать через _wfopen. Пробую так, не получается....


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

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

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