【发布时间】:2010-11-22 15:34:31
【问题描述】:
我有std::vector,其中包含我自己的类,我必须访问它的函数和空位。
class A
{
private:
int var;
vector<string> vec;
public:
void setVar(int i) { var = i; }
void setVec(vector<string> a) { vec = a; }
};
我也有返回函数,但我懒得输入它们。我已经包含了所有必要的文件。
int main()
{
vector<A> vec;
for (int i = 0; i < 10; i++)
{
A tmp;
tmp.setVar(i);
vec.push_back(tmp);
}
for (int i = 0; i < 10; i++)
{
vector<string> tmp;
tmp.push_back("1");
tmp.push_back("2");
tmp.push_back("3");
vec.at(i).setVec(tmp); //Works sometimes or causes error std::out_of_range
vec[i].setVec(tmp); //Crashes the whole programm
}
}
那么自从vector被初始化后,我该如何设置这些变量呢?
我正在使用 g++,这不是实际代码,因为我的实际代码很乱。
Error for vec.at(i).setVec(tmp);
Error is: terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
【问题讨论】:
-
这段代码不会为我编译。你确定
tmp这里的设置是你的实际代码吗?当我修复它以在vector中设置3 个strings 时,此代码运行良好。 -
使用更新的代码,我看不出有任何失败的原因。您在此处编写的代码是否会为您崩溃?