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

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

Войти
Регистрация
Восстановить пароль
 
 
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
#1

Создать 2 указателя на вектор - C++

07.02.2014, 11:57. Просмотров 438. Ответов 16
Метки нет (Все метки)

хотел создать 2 указателя на вектор, а не получается...
пишу:
C++
1
shared_ptr<vector<int>> ptr1 (new vector<int>(10))
подчеркивает vector<int> в самом начале со словами : "vector не является шаблоном". Как правильно его создать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2014, 11:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать 2 указателя на вектор (C++):

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

Уместно ли использование указателя на вектор - C++
Доброго времени суток. Уместно ли использование указателя на вектор? корректна ли следующая запись: vector&lt;int&gt;* ptr=new...

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

Как вызвать метод из указателя на вектор пользовательского типа? - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;string&gt; using namespace std; struct Client { vector &lt;string&gt; login; vector...

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ilot
Модератор
Эксперт С++
1809 / 1166 / 227
Регистрация: 16.05.2013
Сообщений: 3,071
Записей в блоге: 5
Завершенные тесты: 1
07.02.2014, 12:02 #2
Случаем не забыли пробел поставить?
C++
1
shared_ptr< vector<int> > ptr1 (new vector<int>(10));
Тамика
Котовчанин
870 / 450 / 143
Регистрация: 16.02.2010
Сообщений: 2,961
Записей в блоге: 27
07.02.2014, 12:09 #3
Может глупость скажу, но std:: не нужно дописывать? Вы использовали using namespace std?
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
07.02.2014, 12:10  [ТС] #4
Цитата Сообщение от Ilot Посмотреть сообщение
не забыли пробел поставить?
так для этого работает без пробелов
C++
1
shared_ptr<int>
Croessmah
Модератор
Эксперт CЭксперт С++
13139 / 7402 / 829
Регистрация: 27.09.2012
Сообщений: 18,242
Записей в блоге: 3
Завершенные тесты: 1
07.02.2014, 12:12 #5
Цитата Сообщение от Тамика Посмотреть сообщение
но std:: не нужно дописывать? Вы использовали using namespace std?
а может это из boost?
Автору же плевать что есть и другие
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.02.2014, 12:12 #6
Цитата Сообщение от Ilot Посмотреть сообщение
Случаем не забыли пробел поставить?
если есть std::shared_ptr, то это уже C++11 и проблема с отсутствием пробела между >> там решена.
Могу предположить отсутствие:
C++
1
#include <vector>
А вообще не помешает больше кода.
Ilot
Модератор
Эксперт С++
1809 / 1166 / 227
Регистрация: 16.05.2013
Сообщений: 3,071
Записей в блоге: 5
Завершенные тесты: 1
07.02.2014, 12:12 #7
Цитата Сообщение от mat_for_c Посмотреть сообщение
так для этого работает без пробелов
Суть в том, что два идущих подряд символа в шаблоне ">>" расцениваются компилятором как оператор побитового сдвига, а не как элементы синтаксиса шаблона.
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
07.02.2014, 12:12  [ТС] #8
Тамика, респект!
писал так:
C++
1
std::shared_ptr<vector<...>>
Croessmah
Модератор
Эксперт CЭксперт С++
13139 / 7402 / 829
Регистрация: 27.09.2012
Сообщений: 18,242
Записей в блоге: 3
Завершенные тесты: 1
07.02.2014, 12:13 #9
Цитата Сообщение от Ilot Посмотреть сообщение
Суть в том, что два идущих подряд символа в шаблоне ">>" расцениваются компилятором как оператор побитового сдвига, а не как элементы синтаксиса шаблона.
в C++11 требование пробела убрано из Стандарта
Ilot
Модератор
Эксперт С++
1809 / 1166 / 227
Регистрация: 16.05.2013
Сообщений: 3,071
Записей в блоге: 5
Завершенные тесты: 1
07.02.2014, 12:13 #10
Цитата Сообщение от Tulosba Посмотреть сообщение
А вообще не помешает больше кода.
А вот это точно!
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
07.02.2014, 13:18  [ТС] #11
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
#include <iostream>
#include <vector>
#include <memory>
 
void main()
{
   typedef std::shared_ptr<std::vector<int>> ptr_vector;
    
   ptr_vector ptr1 (new std::vector<int>);
   ptr_vector ptr2, ptr3;
 
   for (int i = 0; i < 10; ++i)
      ptr1->push_back(i);
 
   std::vector<ptr_vector> vec_ptrs;
 
   vec_ptrs.push_back(ptr1);
 
   ptr2 = ptr1;
   ptr2->push_back(10);
    
   ptr1.swap(ptr3);
    
   vec_ptrs.push_back(ptr2);
   vec_ptrs.push_back(ptr3);
 
   for (int i = 0; i < vec_ptrs.size(); ++i){
      std::cout << "ptr" << i+1 << ": ";
         for (int j = 0; j < vec_ptrs[i]->size(); ++j)
            std::cout << (*vec_ptrs[i])[j] << " ";
      std::cout << std::endl;
   }
}
а почему swap так интересно работает?

в ответе:
ptr1: 0 1 2 3 4 5 6 7 8 9 10
ptr2: 0 1 2 3 4 5 6 7 8 9 10
ptr3: 0 1 2 3 4 5 6 7 8 9 10
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.02.2014, 13:54 #12
Цитата Сообщение от mat_for_c Посмотреть сообщение
а почему swap так интересно работает?
все ptr ссылаются на одни и те же данные. Поэтому как их не обменивай друг с другом, будет то же самое.
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
07.02.2014, 18:22  [ТС] #13
Цитата Сообщение от Tulosba Посмотреть сообщение
все ptr ссылаются на одни и те же данные
а разве ptr3 не должен быть nullptr?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
07.02.2014, 18:30 #14
Цитата Сообщение от mat_for_c Посмотреть сообщение
а разве ptr3 не должен быть nullptr?
Ну до swap он действительно пустой, а после - уже нет.
mat_for_c
141 / 136 / 29
Регистрация: 26.04.2013
Сообщений: 663
Завершенные тесты: 2
07.02.2014, 18:33  [ТС] #15
http://www.cplusplus.com/reference/m...ared_ptr/swap/
тут swap нормально меняет значения, а тут только передает значение...

Добавлено через 17 секунд
http://www.cplusplus.com/reference/m...ared_ptr/swap/
тут swap нормально меняет значения, а тут только передает значение...

Добавлено через 2 минуты
тогда swap должен присвоить ptr1 нулевой указатель или я не прав?

Добавлено через 24 секунды
тогда swap должен присвоить ptr1 нулевой указатель или я не прав?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2014, 18:33
Привет! Вот еще темы с ответами:

Создать целочисленный массив из 25 элементов. Объявить 2 указателя - C++
доброго времени суток) такая вот задача в c++ visual studio 2005 сама задача Создать целочисленный массив из 25 элементов....

Почему увеличение указателя на sizeof(тип) не тождественно инкременту этого же указателя? - C++
Всем доброго дня.:) Можете обьяснить ,почему при инкриментировании указателя,его значение(адресс) увеличивается на 4 (размер int в...

Преобразование кода без указателя в код с использованием указателя - C++
Правильно ли выполнил? Исходный код без указателя #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; using namespace...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.02.2014, 18:33
Ответ Создать тему
Опции темы

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