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

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

Войти
Регистрация
Восстановить пароль
 
vladoscom93
25 / 25 / 5
Регистрация: 14.05.2011
Сообщений: 242
#1

Как корректно скопировать vector в vector внутри класса - C++

16.02.2015, 18:20. Просмотров 867. Ответов 5
Метки нет (Все метки)

Есть класс принимающий в конструкторе vector:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class test
{
    test(std::vector<std::string> codeList);
    ~test();
 
private:
   std::vector<std::string> codeList;
};
 
test::test(std::vector<std::string> codeList)
{
     test::codeList = codeList; // делал так не выходит
     test::codeList.resize(codeList.size()); // далее в цикле по одному копировал строки все равно вылетает исключение: нарушение прав доступа при записи по адресу
}
что мне сделать, чтобы скопировать корректно векторы? Заранее спасибо
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.02.2015, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как корректно скопировать vector в vector внутри класса (C++):

Как создать vector внутри класса? - C++
#include &lt;vector&gt; using namespace std; // typedef std::vector&lt;int&gt; mantissa; class desyatichnaya_drob { public: int...

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

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;...

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию? - C++
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так. Имеется двумерный вектор. Размера .. Нужно его передать в...

Vector как член класса - C++
собственно заголовок моего класса: #pragma once #include &lt;Vector&gt; #include &quot;StdAfx.h&quot; #include &quot;PObject.h&quot; #include...

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

5
nmcf
5769 / 5080 / 1735
Регистрация: 14.04.2014
Сообщений: 20,786
16.02.2015, 18:24 #2
Используй std::copy() из <algorithm> и вектор передавай по ссылке.
1
DiffEreD
1435 / 772 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.02.2015, 18:44 #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
class test
{
public:
   test() = default;
   test(const std::vector<std::string>&);
   test(std::vector<std::string>&&);
 
   void print() const {for (const std::string& s : codeList) std::cout << s << " ";}
 
private:
   std::vector<std::string> codeList;
};
 
test::test(const std::vector<std::string>& codeList)
{
   this->codeList = codeList;
}
 
test::test(std::vector<std::string>&& other)
{
   codeList = std::move(other);
}
 
int main ()
{
   std::vector<std::string> v {"1", "2", "3", "4"};
   test t(v);
   t.print();
   test t2({"5", "6", "7"});
   t2.print();
}
1
DrOffset
7506 / 4502 / 1023
Регистрация: 30.01.2014
Сообщений: 7,362
16.02.2015, 18:49 #4
Цитата Сообщение от DiffEreD Посмотреть сообщение
C++
1
2
3
4
test::test(const std::vector<std::string>& codeList)
{
   this->codeList = codeList;
}
А почему не так?
C++
1
2
3
test::test(const std::vector<std::string>& codeList)
    : codeList(codeList)
{ }
А то ж это не инициализация получается, а присвоение.
2
DiffEreD
16.02.2015, 18:51
  #5

Не по теме:

Перепутал

0
ValeryS
Модератор
6794 / 5202 / 499
Регистрация: 14.02.2011
Сообщений: 17,443
16.02.2015, 18:55 #6
Цитата Сообщение от vladoscom93 Посмотреть сообщение
test::codeList = codeList; // делал так не выходит
как ты думаешь куды это будет копироваться
test::codeList это поле класса память под него не выделена пока не создан объект
а когда создан то не известно где
посему
Цитата Сообщение от DiffEreD Посмотреть сообщение
this->codeList = codeList;
копировать в codeList текущего объекта
можно и без this но имя поля и аргумента надо бы различать
например так
C++
1
2
3
4
test::test(const std::vector<std::string>& arg_codeList)
{
   codeList = arg_codeList;
}
Цитата Сообщение от vladoscom93 Посмотреть сообщение
test::codeList = codeList
проканает если codeList объявлен как static, но тогда он будет один на все объекты
1
16.02.2015, 18:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2015, 18:55
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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