我藐視變量類型如下:push_back()在一個2D矢量中,什麼是正確的語法?
typedef unsigned int color[3];
然後我創建了一個類型的載體:
3210現在,說我要一個新元素推回到這個矢量。什麼是正確的語法?我的G ++不會讓我這樣做:
color temp = {255, 255, 255};
RGB.push_back(temp);
我本以爲這是一個很好的語法:(任何建議都非常讚賞
我藐視變量類型如下:push_back()在一個2D矢量中,什麼是正確的語法?
typedef unsigned int color[3];
然後我創建了一個類型的載體:
3210現在,說我要一個新元素推回到這個矢量。什麼是正確的語法?我的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);
爲什麼,什麼是G ++要反對呢? –
我在生活中見過的最長的錯誤信息。這就像聖經的記錄或其他內容。這是錯誤消息的第1章: 'void __gnu_cxx :: new_allocator <_Tp> :: construct(_Tp *,const _Tp&)[with _Tp = unsigned int [3],_Tp * = unsigned int(*)[3]]'' : /usr/include/c++/4.5/bits/stl_vector.h:745:6:從'void std :: vector實例化爲向量<_Tp, _Alloc> :: push_back(const value_type&)[with _Tp = unsigned int [3],_Alloc = std :: allocator,value_type = unsigned int [3]]' –
part1c.cpp:66:24:從這裏實例化 /usr/include/c++/4.5/ext/new_allocator.h:105: 9:錯誤:ISO C++禁止初始化數組new –