我不明白爲什麼下面的代碼由於emplace_back的「錯誤」使用而無法編譯。你能告訴我它有什麼問題,以及我可以使用哪種解決方法?emplace_back on std :: vector
#include <vector>
class Test {
private:
std::size_t n_;
std::vector<double> a_;
std::vector<double> b_;
public:
Test(std::size_t n, std::initializer_list<std::size_t> list)
: n_(n), a_(list.begin()[0]), b_(list.begin()[1]){};
};
int main() {
Test t{5, {3, 4}};
std::vector<Test> v;
v.emplace_back(5, {3, 4});
return 0;
}
使用v.emplace_back(測試(5, {3,4}));將一個Test對象添加到矢量 – berendeanicolae
[OT]:如果初始化程序列表應該總是大小爲2,則考慮使用std :: array或用兩個參數替換 –
@piotr:這段代碼顯然是一個真正的代碼。我比它更簡單,我同意它看起來很愚蠢。 – InsideLoop