问题是把原来的向量复制到我的向量中
problem copy original vector into my vector
我有一个问题:
如果我有:
void test (std::vector<int> *original)
{
myvector = vector<int>();
myvector.reserve(&original.size());
copy(original.begin(),original.end(),back_inserter(myvector));
}
我想复制一个向量到原来的目标向量
我有三个错误:
错误1错误C2228: left of '。Size '必须有class/struct/union
错误2错误C2228:左'。Begin '必须有class/struct/union
错误3错误C2228:左'。End '必须有class/struct/union
为什么? ?
注意,original
是一个指针。你必须这样写:
void test (std::vector<int> *original)
{
myvector = vector<int>();
myvector.reserve(original->size());
copy(original->begin(), original->end(), back_inserter(myvector));
}
指针对->
解引用,对.
不解引用。&
表示取地址
使用说明:
//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());
应该是original->size()
, original->begin()
, original->end()
。original
是一个原始指针,你不能在它上面使用.
,使用->
来获得"指向对象的成员"。
original
是指针-使用original->size()
original->begin()
original->end()
另外,myvector = vector<int>();
最好换成myvector.clear();
这里似乎有一些关于指针的混淆。你已经传入了一个指针,所以应该用-> not来取消对它的引用。
相关文章:
- 我的 If Else 语句无法在向量 (C++) 中提供最大值
- 为什么即使使用 for 循环遍历我的向量,它也没有输出到控制台?(C++)
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 为什么我的向量::擦除调用会抛出"vector subscript out of range"?
- 我可以做些什么来改进指针向量中的此搜索?
- 防止我的向量在调用它的函数结束时被删除
- 所有shared_ptr都指向我的向量中的同一指针
- 在我为我的二维向量提供第一个值后控制台关闭
- 在不同条件下无法访问我的向量变量
- 为什么我的最终向量是它应该大小的两倍并且具有前导 0?
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- 当我使用我的向量名称后跟包含整数变量的括号时,括号是什么意思
- 我可以在不循环访问数组/向量的情况下检查数组/向量中的单词吗?
- 是一个std ::向量线程,我的目的是安全的
- 试图创建一系列向量(我创建的模板化向量类)
- 为什么我的代码没有将每个对象添加到向量中
- 为什么我的向量函数的返回值总是 1
- 为什么我的将向量保存到文件然后再次读出的方法不起作用?
- 我的内部循环XML在C 向量中的预期无法正常使用Write_xml
- 如何为我的自定义向量类实现类似 vector.insert 的方法