一個簡單的事情,起初我認爲似乎比我想的要困難。我想在一個拷貝構造函數中拷貝一個int類型的向量向量。在複製構造函數中複製矢量向量
std::vector<std::vector<int> * > * bar;
我試過,但它不工作:
Foo(const Foo& rhs)
: bar(new std::vector<std::vector<int> * >(rhs.vec->size())) {
for (std::size_t i = 0; i < rhs.bar->size(); i++) {
bar->push_back(new std::vector<int>());
for (size_t j = 0; j < (*rhs.bar)[i]->size(); j++) {
bar->back()->push_back((*rhs.bar)[i]->at(j));
}
}
}
我也想過,如果我可以使用的東西與swap
和back()
但我不知道這是工作了。
有人能告訴我一個正確的方法來複制?感謝您的幫助!
如果你確實有一個「向量類型爲int的向量」,你不需要在拷貝構造函數中做任何特殊的事情。你爲什麼使用所有這些指針? – Chad 2013-04-22 19:23:12
std :: vector *> * bar中的指針是否真的有必要? –
lucasmrod
2013-04-22 19:23:51
這是可怕的代碼。除非你的意思是「乘法」,否則不要在C++中說'*'。 – 2013-04-22 19:24:00