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