SuperMiQi Ответов: 1

Как скопировать длинный массив, переданный в качестве аргумента в std::list


Всем Привет,

Я пытаюсь скопировать массив long в std::list или std:vector.

У меня есть следующий пример кода:

#include "stdafx.h"
#include <iostream>
#include <list>
#include <iterator>

using namespace std;

class Channels
{
public:
void Configure(long channels[])
{
_channels <= channels; //..... copy channels to _channels
}

private:
   std::initializer_list<long> _channels{};
}



Не могли бы вы указать мне, на правильном ли я пути?

Заранее Вам большое спасибо.
С уважением.
Мики

Что я уже пробовал:

Я попробовал следующее, но не уверен, что это правильный путь:

#include "stdafx.h"
#include <iostream>
#include <list>
#include <iterator>

using namespace std;

class Channels
{
public:
void Configure(std::initializer_list<long> chans, int size)
{
   _channels = std::initializer_list<long>{ chans };
}

private:
   std::initializer_list<long> _channels{};
}

void main()
{
   long channels[] {1, 3 , 5};
   Channels channel;
   Channel.Configure(channels);
}


Пример кода компилируется счастливо.

1 Ответов

Рейтинг:
1

John R. Shaw

Как насчет простого решения старой школы.
1. передайте размер массива вместе с массивом; в противном случае вы не знаете его размер.
2. просто назначьте его переменной-члену.

Это должно сделать трюк:

class Channels
{
public:
void Configure(long channels[], size_t size)
{
    _channels.assign(channels, channels+size);
}

private:
   std::vector _channels;
}


SuperMiQi

Большое спасибо. Это был действительно хороший подход.
Теперь я опубликую весь свой набор кодов, чтобы увидеть, нахожусь ли я на правильном пути. Это работает, но, возможно, я упускаю важные ключи.
Спасибо снова.