c++ - 在结构中使用 C++ vector 有什么问题吗?

标签 c++ vector structure

好的,我要从 vb.net 转到 C++。我试图在结构中使用 vector ,但编译器为此对我大吼大叫。目前的说法有什么问题?

#include <vector>

struct FactorSet
{
 vector<long long> UpperFactor(0);
 vector<long long> LowerFactor(0);
};

输出错误(Visual Studio 2008):

错误 1 ​​错误 C2059:语法错误:“常量”

我敢猜测这是我对 vector 的真正含义缺乏了解。在我看来,它是一个对象,尽管我认为它是所谓的模板。其他像字符串这样的对象似乎没有问题。我还假设这也扩展到类定义,因为结构和类非常相似。

最佳答案

你想要:

#include <vector>

struct FactorSet
{
 std::vector<long long> UpperFactor;
 std::vector<long long> LowerFactor;
};

虽然你可能也有 long long 的问题,因为它目前不是 C++ 的一部分。

如果你真的想给 vector 一个大小,你需要通过结构构造函数来实现:

struct FactorSet
{
 std::vector<long long> UpperFactor;
 std::vector<long long> LowerFactor;

 FactorSet() : UpperFactor(42), LowerFactor(42) {}
};

所以现在当你说:

FactorSet f;

f 中的 vector 的大小都是 42。

至于 vector 实际上是什么,它是一个非常像字符串的类,除了在 vector 的情况下你必须说出它包含什么类型的东西。所以

vector <char> s;

与(但不完全相同)非常相似:

string s;

关于c++ - 在结构中使用 C++ vector 有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224063/

相关文章:

c - 在 C 中显示 float

c - 返回指向 C 中结构的指针

c++ - 一个简单的多维数组取消引用会很慢吗?

c++ - 在 gtkmm 中找不到 GDK::InterpType 成员

c++ - 如何将 Struct * 列表转换为 void * 列表?

c++ - 键鼠系统 Global Hook

c++ - 在 std::vector 中查找迭代器

numpy - 不同形状的 NumPy 数组的逐元素乘法

c - 从链接列表中删除和附加列表

c++ - 使用 n 维 C++ Vector 类实现算术运算符重载的更好方法?