在结构中使用C++向量有什么问题吗?

Cha*_*son 1 c++ structure vector

好的,我是从vb.net到c ++.我试图在结构中使用向量,但编译器对我大喊大叫.当前的陈述有什么问题?

#include <vector>

struct FactorSet
{
 vector<long long> UpperFactor(0);
 vector<long long> LowerFactor(0);
};
Run Code Online (Sandbox Code Playgroud)

输出错误(Visual Studio 2008):

错误1错误C2059:语法错误:'常量'

我冒昧地猜测,我对矢量究竟是什么缺乏了解.在我看来它是一个对象,虽然我认为它的最新名称是模板.像字符串这样的其他对象似乎没有问题.我还假设这也扩展到类定义,因为结构和类是如此相似.

小智 6

你要:

#include <vector>

struct FactorSet
{
 std::vector<long long> UpperFactor;
 std::vector<long long> LowerFactor;
};
Run Code Online (Sandbox Code Playgroud)

虽然你可能也有很长的问题,因为这目前不是C++的一部分.

如果你真的想给向量赋一个大小,你需要通过结构构造函数来做:

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

 FactorSet() : UpperFactor(42), LowerFactor(42) {}
};
Run Code Online (Sandbox Code Playgroud)

所以现在当你说:

FactorSet f;
Run Code Online (Sandbox Code Playgroud)

f中的向量都将具有42的大小.

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

vector <char> s;
Run Code Online (Sandbox Code Playgroud)

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

string s;
Run Code Online (Sandbox Code Playgroud)