我有一个问题:
如果我有:
void test (std::vector<int> *original)
{
myvector = vector<int>();
myvector.reserve(&original.size());
copy(original.begin(),original.end(),back_inserter(myvector));
}
我想在原始目标矢量中复制一个矢量
我有3个错误:
错误1错误C2228:'。size'的左边必须有class / struct / union
错误2错误C2228:'。begin'的左边必须有class / struct / union
错误3错误C2228:'。end'的左边必须有class / struct / union
为什么???
答案 0 :(得分:5)
请注意,original
是指针。你必须这样写:
void test (std::vector<int> *original)
{
myvector = vector<int>();
myvector.reserve(original->size());
copy(original->begin(), original->end(), back_inserter(myvector));
}
指针取消引用->
,而不是.
。 &
表示“取地址”。
答案 1 :(得分:3)
使用:
//if you create a new vector object!
std::vector<int> myvector(original->begin(), original->end());
或者,
//if you want to populate an already created vector object!
myvector.clear(); //if you want to erase existing elements!
myvector.insert(myvector.end(), original->begin(), original->end());
答案 2 :(得分:1)
应为original->size()
,original->begin()
,original->end()
。 original
是一个原始指针,您不能在其上使用.
,使用->
来获取“指向对象的成员”。
答案 3 :(得分:0)
original
是指针 - 使用original->size()
original->begin()
original->end()
此外,myvector = vector<int>();
最好应替换为myvector.clear();
答案 4 :(得分:0)
这里的指针似乎有些混乱。你已经传入一个指针,所以应该用 - &gt;取消引用它没有。