我有std::vector
它包含我自己的類,我必須訪問它的函數和空白。C++訪問向量
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個`string`,這段代碼運行良好。 – 2010-11-22 15:45:56
使用更新的代碼,我沒有看到任何理由,這應該失敗。您寫的代碼是否會爲您崩潰? – 2010-11-22 16:37:37