开发者

problem copy original vector into my vector

i have a question:

if i have:

void test (std::vector<int> *original)
{
    myvector = vector<int>();
    myvector.reserve(&original.size());
    copy(original.begin(),original.end(),back_inserter(myvector));
}

I want 开发者_开发知识库to copy a vector in my original target vector

I have 3 error:

Error 1 error C2228: left of '.size' must have class/struct/union

Error 2 error C2228: left of '.begin' must have class/struct/union

Error 3 error C2228: left of '.end' must have class/struct/union

why???


Note that original is a pointer. You have to write it like this:

void test (std::vector<int> *original)
{
    myvector = vector<int>();
    myvector.reserve(original->size());
    copy(original->begin(), original->end(), back_inserter(myvector));
}

Pointers are dereferenced with ->, not with .. & means "take the address of".


Use:

//if you create a new vector object!
std::vector<int> myvector(original->begin(), original->end());

Or,

//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());


Should be original->size(), original->begin(), original->end(). original is a raw pointer, you can't use . on it, use -> to get "member of the pointed-to object".


original is a pointer - use original->size() original->begin() original->end()

Also, myvector = vector<int>(); should preferably be replaced with myvector.clear();


There seems to be some confusion about pointers here. You have passed in a pointer, so should dereference it with -> not .

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜