簡體   English   中英

push_back()在2d向量中,什么是正確的語法?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM