c++ - 使用 vector 作为类成员

标签 c++ class vector

<分区>

我是 C++ 和一般编程的新手,而且英语不是我的第一语言,所以我可能无法正确地表达我的问题以供您理解。

我写了下面的工作程序:

#include<iostream>
#include<vector>
using namespace std;

class Vector{
    vector<int>numbers;

public:
    Vector(vector<int> const& v) : numbers(v) {}

    void print(){
        for (const auto& elem : numbers){
            cout << elem << " ";
        }
    }
};


int main(){

    Vector p{ vector < int > {15, 16, 25} };
    p.print();
}

现在,如果我尝试创建一个对象写作:

Vector p{ 15, 16, 25 };

这是行不通的。我的问题是我必须做什么才能让它工作?帮助将不胜感激!提前致谢。

最佳答案

获得所需内容的最简单方法是使用一组额外的大括号来指示所提供的参数一起构成构造函数的第一个参数。尝试:

int main() {

    Vector p{ {15, 16, 25} };
    p.print();
}

另一种方式,如果你想让它与 main 一起工作目前的情况是实现 initializer list构造函数。

#include <initializer_list>
#include <iostream>
#include <vector>

using std::vector;
using std::cout;

class Vector {
    vector<int>numbers;

public:
    Vector(vector<int> const& v) : numbers(v) {}

    // Implement initializer list constructor
    Vector(std::initializer_list<int> args) : numbers(args.begin(), args.end()) {}

    void print() {
        for (const auto& elem : numbers) {
            cout << elem << " ";
        }
    }
};


int main() {

    Vector p{ 15, 16, 25 };
    p.print();
}

请注意,您可以将初始化列表目录传递给std::vector的构造函数(Vector(std::initializer_list<int> args) : numbers(args) {} 会起作用),但这会导致列表的额外拷贝。

关于c++ - 使用 vector 作为类成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44293425/

相关文章:

c++ - 复数打印程序出现故障

c++:在网格上找到离查询点最近的点

c++ - 将 const std::vector<std::string> 转换为 const char **

C++ |无法将项目添加到类成员 vector

C++/Qt : Just a LNK2019 and I don't know why

c++ - 工具栏上的图标不透明

javascript - 使用 MooTools 使 Javascript 变量成为全局变量

c++ - 范围界定错误并且不能有 cv 限定符?

matlab - 在matlab中,是否可以将组织在文件夹中的类的方法放在子目录/子文件夹中?

c++ - 我如何使用 std::allocator 代替 realloc?