c++ - 初始化具有大小的结构 vector 时出错

标签 c++ vector

我有一个定义如下的结构

struct valindex {
    int x;
    int y;
    valindex(int val, int index) : x(val), y(index) {}
};

尝试初始化此结构的 vector 时出现错误

vector<valindex> vals() // this works fine
vector<valindex> vals(20) // throws the error mentioned below when the size is specified

required from 'static _ForwardIterator std::__uninitialized_default_n_1<_TrivialValueType>::__uninit_default_n(_ForwardIterator, _Size) [with _ForwardIterator = valindex*; _Size = long unsigned int; bool _TrivialValueType = false]'

有人可以解释这个错误的原因并提供解决方案吗?

谢谢!

最佳答案

vector<valindex> vals();

之所以有效,是因为它声明了一个名为 vals 的函数不带参数并返回 vector<valindex> .参见 https://en.wikipedia.org/wiki/Most_vexing_parse .

vector<valindex> vals(20);

不起作用,因为它试图构造一个 vectorvalindex创建这样一个对象的要求之一是 valindexdefault-constructible .自 valindex不是默认可构造的,无法编译该行。

关于c++ - 初始化具有大小的结构 vector 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44768051/

相关文章:

C++ : Getting function virtual 'address' with member function pointer

c++ - 如何在 GLSL 中使用 RGBA16?

c++ - 如何使用 QSettings 在 ini 部分写入文件路径

c++多线程单例 - 此代码有任何问题

vector - 如何在迭代过程中改变向量的项?

多维数组的Java序列化

c++ - 将 Wireshark 的时间戳与::QueryPerformanceCounter 返回值相关联

c++ - 为什么我不能在 C++11 中创建一个 lambda vector (相同类型)?

r - 测试一个值在 R 中的向量中是否唯一

c++ - 如何在队列中存储位于 vector 中的对象的unique_ptr