问题复制原始矢量到我的矢量

时间:2011-05-03 12:50:05

标签: c++ vector copy std

我有一个问题:

如果我有:

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

为什么???

5 个答案:

答案 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;取消引用它没有。