【发布时间】:2014-09-17 16:25:46
【问题描述】:
我正在尝试创建一个向量,每个向量都具有预定义的大小。我本能的第一次尝试是这样做(在 C++ Builder XE2 中,UnicodeString 是在其组件中使用的字符串类等。假设 Expression 是 UnicodeString 并且 Length() 返回它包含的字符数):
vector <UnicodeString> StringVector ('\0',2);
vector <StringVector> ExpressionArray(Expression.Length());
但是我的编译器讨厌这个。它有什么问题?
另一个选项是这样的:
vector <vector <UnicodeString> > ExpressionArray(Expression.Length());
但是,我得到一个 Expression.Length() 空向量的元素向量,而不是 2 元素空字符串向量的 Expression.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];
}
怎么了?令我震惊的是,我可能误用了下标运算符。
非常感谢,
斯巴灵顿利
【问题讨论】: