我正在尝试用C ++创建双向量结构。
struct distance{
vector<double> x(10000);
vector<double> y(10000);
vector<double> z(10000);
};
distance distance_old, distance_new;
在定义中,它会抛出错误说:
error: expected identifier before numeric constant
error: expected ‘,’ or ‘...’ before numeric constant
我哪里错了?
我看过这篇文章Structure of vectors C++ 但它似乎对我不起作用。
答案 0 :(得分:6)
您正在尝试构造结构中的向量,这是无法完成的。您必须在构造函数中执行它,就像普通类一样:
struct distance
{
vector<double> x;
vector<double> y;
vector<double> z;
distance()
: x(10000), y(10000), z(10000)
{ }
};
答案 1 :(得分:1)
您无法在struct声明中调用vector构造函数。摆脱结构声明中的(10000)。如果要使用非默认向量构造函数来设置向量初始容量,则需要在结构的构造函数中执行此操作。
答案 2 :(得分:-4)
一个错字,基本上 - 你需要
vector<double> x[10000];
...
错误的括号!
此外,严格来说,你确实是在定义一个向量数组,而不是双向量,它们是vector< vector<double> >
。根据你的目的,两者都可以。
编辑:此解决方案使用g ++编译并且没有运行时错误。
dist.h:
#include <vector>
using namespace std;
struct my_distance{
vector<double> x[10000];
vector<double> y[10000];
vector<double> z[10000];
};
dist.cpp:
#include "dist.h"
my_distance distance_old, distance_new;
int main()
{
return 0;
}
NB“距离”已被STL用于其他内容,因此必须重命名。