C++ 命名向量的向量会导致编译器错误

C++ 命名向量的向量会导致编译器错误,c++,vector,C++,Vector,我正在尝试创建一个向量,每个向量都具有预定义的大小。我本能的第一个尝试是(在C++ Builder XE2中)一个UnoDeString是一个在它的组件中使用的字符串类。假设表达式是一个UnoDeString,并且长度()返回它包含的字符数): 向量StringVector('\0',2); 向量表达式数组(Expression.Length()); 但是我的编译器讨厌这个。怎么了 另一个选择是: vector <vector <UnicodeString> > E

我正在尝试创建一个向量,每个向量都具有预定义的大小。我本能的第一个尝试是(在C++ Builder XE2中)一个UnoDeString是一个在它的组件中使用的字符串类。假设表达式是一个UnoDeString,并且长度()返回它包含的字符数):

向量StringVector('\0',2);
向量表达式数组(Expression.Length());
但是我的编译器讨厌这个。怎么了

另一个选择是:

  vector <vector <UnicodeString> > ExpressionArray(Expression.Length());
向量表达式数组(Expression.Length()); 但是,我得到的不是一个表达式。Length()-元素向量的2元素空字符串向量,而是一个表达式。Length()-元素向量的空向量

我想我可以使用resize语句,但我不确定如何使用二维向量

我怎么写这样的东西呢

以下代码在左大括号后的第一行引发异常:

for (int i=0;i<Expression.Length();i++)
    {
        ExpressionArray[0][i]=Expression.SubString(i+1,1); //i+1 because UnicodeStrings are 1-based
        ExpressionArray[1][i]="B";
        OnClickStatusInfo->Lines->Add(ExpressionArray[0][i])+"\t"+ExpressionArray[1][i];
    }
for(int i=0;iLines->Add(expressionaray[0][i])+“\t”+expressionaray[1][i];
}
怎么了?我突然想到我可能误用了下标运算符

非常感谢

斯伯林顿利酒店

向量StringVector('\0',2);
向量表达式数组(Expression.Length());
但是我的编译器讨厌这个,有什么问题吗

StringVector
是变量,当
vector
希望输入

向量StringVector('\0',2);
向量表达式数组(Expression.Length());
但是我的编译器讨厌这个,有什么问题吗


StringVector
是变量,当
vector
希望在
中有类型时,有4种形式的vector(请参阅)

从论点的数量来看,你指的是第二个“填充”构造函数

向量字符串向量('\0',2)

您的第一次尝试看起来像是交换了大小和值参数。即使交换了参数,您的
UnicodeString
也应该有一个构造函数,它接受单个
char
,这看起来很奇怪,但它可能不能

vector ExpressionArray(Expression.Length());


如果
Expression.Length()
的返回类型与
vector::size_type
兼容,
StringVector
具有默认构造函数和复制构造函数,则第二次尝试应该可以工作。可能这些条件之一不成立。

有4种形式的向量构造函数(请参阅)

从论点的数量来看,你指的是第二个“填充”构造函数

向量字符串向量('\0',2)

您的第一次尝试看起来像是交换了大小和值参数。即使交换了参数,您的
UnicodeString
也应该有一个构造函数,它接受单个
char
,这看起来很奇怪,但它可能不能

vector ExpressionArray(Expression.Length());

如果
Expression.Length()
的返回类型与
vector::size\u type
兼容,
StringVector
具有默认构造函数和复制构造函数,则第二次尝试应该可以工作。可能这些条件之一不成立

for (int i=0;i<Expression.Length();i++)
    {
        ExpressionArray[0][i]=Expression.SubString(i+1,1); //i+1 because UnicodeStrings are 1-based
        ExpressionArray[1][i]="B";
        OnClickStatusInfo->Lines->Add(ExpressionArray[0][i])+"\t"+ExpressionArray[1][i];
    }
vector <UnicodeString> StringVector ('\0',2);     
vector <StringVector> ExpressionArray(Expression.Length());