Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
vladoscom93
25 / 25 / 8
Регистрация: 14.05.2011
Сообщений: 242
1

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

16.02.2015, 18:20. Просмотров 1084. Ответов 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 внутри класса?
#include &lt;vector&gt; using namespace std; // typedef std::vector&lt;int&gt;...

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

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

Как передать целочисленную матрицу типа std::vector<std::vector<int> > в функцию?
Здравствуйте. Почитал на форуме, но так и не понял что я делаю не так....

Vector как член класса
собственно заголовок моего класса: #pragma once #include &lt;Vector&gt;...

5
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
16.02.2015, 18:24 2
Используй std::copy() из <algorithm> и вектор передавай по ссылке.
1
DiffEreD
1442 / 779 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.02.2015, 18:44 3
Лучший ответ Сообщение было отмечено vladoscom93 как решение

Решение

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
8121 / 4707 / 1148
Регистрация: 30.01.2014
Сообщений: 7,660
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
Модератор
7262 / 5516 / 692
Регистрация: 14.02.2011
Сообщений: 18,672
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)'
Добрый день. Делал по методички, и почему-то валятся ошибки... файл...

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

Указатель на объект вектор в векторе vector < vector<int>* >*
Дело касается вот чего, есть такая вот незатейлевая вещь. #include &lt;vector&gt;...


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

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

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