Вы не можете использовать необработанные массивы в качестве типов для любых стандартных контейнеров.
Типы должны быть присваиваемыми (они имеют неявное или явное operator =
) и конструируемыми (они имеют неявное или явное значение по умолчанию и конструкторы копирования).
Вы можете заключить ваш тип массива в struct
, чтобы разрешить использование со стандартными контейнерами:
struct my_colour_array
{
unsigned int colours[3];
};
В этом случае компилятор будет генерировать неявные операторы и конструкторы. Если вам нужно другое поведение, вы можете определить свое.
Для вашего использования может иметь смысл иметь инициализирующий конструктор:
struct my_colour_array
{
unsigned int colours[3];
// initialising constructor
my_colour_array (unsigned int r, unsigned int g, unsigned int b)
{
this->colours[0] = r;
this->colours[1] = g;
this->colours[2] = b;
}
};
Тогда вы можете настроить свой вектор:
std::vector<my_colour_array> myvector;
// push data onto container via a temporary
myvector.push_back(my_colour_array(0,255,0));
// etc
Надеюсь, это поможет.