c++ - 将旧 vector 设置为新 vector

标签 c++ vector data-structures stl stdvector

假设我正在上课:

#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 提供了最佳方法来执行此操作,如果您想使用传递给Examplestd::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/

相关文章:

java - 如果我想根据不同的属性以不同的方式搜索一个对象,应该使用什么数据结构?

c++ - 如何存储大小位数组,例如大小 % 8 != 0?

c++ - 使用来自不同线程的 opengl-command

c++ - 如何在 C++ 中获取 char 的整数值?

c++ - 对 vector 中的整数序列求和

java - 删除一个链接如何从链表中删除一个节点?

c++ - 模板化类型转换运算符和偏特化

通过 Visual Studio 进行 C++ 调试 - vector 大小变化的观察点

python - sklearn中CountVectorizer(binary=True)和n CountVectorizer(binary=False)有什么区别

data-structures - 关于完全二叉树的困惑