[英]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.