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