双向量结构

时间:2012-02-08 17:46:50

标签: c++

我正在尝试用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++ 但它似乎对我不起作用。

3 个答案:

答案 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用于其他内容,因此必须重命名。