假设我正在上课:
#import <vector>
class Example {
std::vector<float> v;
public:
Example(std::vector<float>);
};
如何将现有 vector v 设置为等于通过构造函数传递的 vector ?是否有某种“可接受”的方式来做到这一点?
我考虑过循环,然后只是添加它们..但它似乎是“被迫的”。
#import "Example.h"
Example::Example(std::vector<float> u) {
//or however a vector iterates! :-)
for (int i = 0; i < u.size; ++i)
this->v.push_back(u.at(i));
}
有更好的方法吗?
最佳答案
C++11 提供了最佳方法来执行此操作,如果您想使用传递给Example
的std::vector
>,因为您不想分配和复制到新的 std::vector
。这称为 move constructor :
class Example {
std::vector<float> _v;
public:
Example(std::vector<float>&& v) : _v(std::move(v)) {}
};
在您的代码中,您可以强制这样调用它:
std::vector<float> foo{4.0, 8.0, 15.0, 16.0, 23.0, 42.0};
Example bar = std::move(foo);
A copy constructor当您想复制参数时使用:
class Example {
std::vector<float> _v;
public:
Example(const std::vector<float>& v) : _v(v) {}
};
并且可以像这样使用:
std::vector<float> foo{4.0, 8.0, 15.0, 16.0, 23.0, 42.0};
Example bar = foo;
关于c++ - 将旧 vector 设置为新 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28184395/