使用C+有什么问题吗+;结构中的向量? >,我是从VB.NET到C++的。我试图在一个结构中使用向量,但编译器为此对我大喊大叫。当前的声明有什么问题 #include <vector> struct FactorSet { vector<long long> UpperFactor(0); vector<long long> LowerFactor(0); }; #包括 结构因子集 { 向量上限因子(0); 向量下限因子(0); };

使用C+有什么问题吗+;结构中的向量? >,我是从VB.NET到C++的。我试图在一个结构中使用向量,但编译器为此对我大喊大叫。当前的声明有什么问题 #include <vector> struct FactorSet { vector<long long> UpperFactor(0); vector<long long> LowerFactor(0); }; #包括 结构因子集 { 向量上限因子(0); 向量下限因子(0); };,c++,vector,structure,C++,Vector,Structure,输出错误(Visual Studio 2008): 错误1错误C2059:语法错误:“常量” 我冒昧地猜测,这是因为我对向量的真正含义缺乏理解。在我看来,它是一个对象,尽管我认为它被称为模板。其他对象(如字符串)似乎没有问题。我还假设这也扩展到了类定义,因为结构和类非常相似。您想要: #include <vector> struct FactorSet { std::vector<long long> UpperFactor; std::vector<long

输出错误(Visual Studio 2008):

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

我冒昧地猜测,这是因为我对向量的真正含义缺乏理解。在我看来,它是一个对象,尽管我认为它被称为模板。其他对象(如字符串)似乎没有问题。我还假设这也扩展到了类定义,因为结构和类非常相似。

您想要:

#include <vector>

struct FactorSet
{
 std::vector<long long> UpperFactor;
 std::vector<long long> LowerFactor;
};
f中的向量大小均为42

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

vector <char> s;
你想要:

#include <vector>

struct FactorSet
{
 std::vector<long long> UpperFactor;
 std::vector<long long> LowerFactor;
};
f中的向量大小均为42

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

vector <char> s;

是的,可以在结构或类中使用向量。问题是,在C++中,不能初始化联机成员;您需要在构造函数中进行初始化。例如:'

class FactorSet {
   public:
       FactorSet() : UpperFactor(0), LowerFactor(0) {}
       // ...
   private:
       std::vector<int64_t> UpperFactor;
       std::vector<int64_t> LowerFactor; 
};
类因子集{
公众:
FactorSet():上限因子(0),下限因子(0){}
// ...
私人:
std::向量上因子;
std::向量LowerFactor;
};

只是一些评论。。。默认情况下,vector将使用零元素构造,因此无需以这种方式显式构造它(事实上,这样做可能比仅使用默认构造函数稍微慢一点)。此外,类型
long
目前是非标准的。考虑在 Stdit.H./Cu>中定义< <代码> Int6xt T/<代码>(并且,更为可取的是,在页眉<代码> Boo/cStdit.Hpp)。

是的,您可以在结构或类中使用向量。问题是,在C++中,不能初始化联机成员;您需要在构造函数中进行初始化。例如:'

class FactorSet {
   public:
       FactorSet() : UpperFactor(0), LowerFactor(0) {}
       // ...
   private:
       std::vector<int64_t> UpperFactor;
       std::vector<int64_t> LowerFactor; 
};
类因子集{
公众:
FactorSet():上限因子(0),下限因子(0){}
// ...
私人:
std::向量上因子;
std::向量LowerFactor;
};


只是一些评论。。。默认情况下,vector将使用零元素构造,因此无需以这种方式显式构造它(事实上,这样做可能比仅使用默认构造函数稍微慢一点)。此外,类型
long
目前是非标准的。考虑在 Stdit.H./Cu>中定义< <代码> Int6xt T/<代码>(并且,更为可取的是,在页眉<代码> Boo/cSTndi.Hpp)。

您不应该“来自另一种语言”。找一本书,从头开始学习,应用其他语言的知识只会把你搞得一团糟。你说得对,先生,我就是这么做的。目前正在使用赫伯特·席尔德的《C++,第四版完整参考资料》作为我的参考资料。有时一些小细节,比如我所面临的问题,并不能从这些基础书籍中得到解决。我相信我最终会通过更多的阅读找到答案。但是从语义上讲,面向对象和过程的思想流派可以在不同的语言之间传播,不是吗?不是,请不要,不是Schildt。一般认为是C++上最差的C++作者(和C)从GMan提供的列表中加速的C++,实际上是为你的位置感到遗憾,但是SHILLT书籍确实是一种浪费。很好,我想你是活到老学到老。我想这就是我浏览巴恩斯和诺布尔,一时兴起买东西的原因。我会留意GMan的。再次感谢……你不应该“来自另一种语言”。找一本书,从头开始学习,应用其他语言的知识只会把你搞得一团糟。你说得对,先生,我就是这么做的。目前正在使用赫伯特·席尔德的《C++,第四版完整参考资料》作为我的参考资料。有时一些小细节,比如我所面临的问题,并不能从这些基础书籍中得到解决。我相信我最终会通过更多的阅读找到答案。但是从语义上讲,面向对象和过程的思想流派可以在不同的语言之间传播,不是吗?不是,请不要,不是Schildt。一般认为是C++上最差的C++作者(和C)从GMan提供的列表中加速的C++,实际上是为你的位置感到遗憾,但是SHILLT书籍确实是一种浪费。很好,我想你是活到老学到老。我想这就是我浏览巴恩斯和诺布尔,一时兴起买东西的原因。我会留意GMan的。再次感谢……哇,太快了。由于我试图在声明中用零长度初始化,我猜想它被当作常量,并且结构和分类不象C++那样。谢谢你,尼尔!哇,太快了。由于我试图在声明中用零长度初始化,我猜想它被当作常量,并且结构和分类不象C++那样。谢谢你,尼尔!谢谢你的课堂示范
int64_t
stdint.h
不再是
long
@Mike的标准,是的。它们在IEEE Std.1003.1 POSIX、OpenGroup基本规范/单一UNIX规范以及ISO C99标准中有规定。Windows根本不符合所有三个标准(这就是为什么我建议使用,它解决这个问题)。好吧,也许它们出现在更标准的<代码>长长< /C>中,但它们不是标准C++。问题是关于C++,而不是POSIX,UNIX或C99。谢谢这个类的例子!code>int64_t和
stdint.h
不再是
long
@Mike的标准,是的。它们在IEEE标准1003.1 POSIX(OpenGroup Bas)中规定