[英]push_back() in a 2d vector, what is the right syntax?
我违反了变量类型如下:
typedef unsigned int color[3];
然后我创建了一个这种类型的向量:
vector<color> RGB;
现在,假设我想将一个新元素推回到这个向量中。 什么是正确的语法? 我的g ++不会让我这样做:
color temp = {255, 255, 255};
RGB.push_back(temp);
我认为这将是一个很好的语法:(任何建议非常感谢
您不能将原始数组用作任何标准容器的类型。
类型必须是可赋值的(它们具有隐式或显式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
希望这可以帮助。
你的颜色类型很简单,所以我会用另一个向量来定义这个类型:
typedef vector<int> color;
vector<int> temp(3,0); // 3 ints with value 0
temp[0] = 255;
temp[1] = 255;
temp[2] = 255;
接着:
vector<color> RGB;
RGB.push_back(temp);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.