gpt4 book ai didi

c++ - 在 vector 的 vector 上捕获 out_of_range

转载 作者:IT老高 更新时间:2023-10-28 21:42:40 24 4
gpt4 key购买 nike

我有一个 vector vector 来建立一个整数映射,我很想在抛出一个 vector 超出范围的错误时通过执行以下操作来捕获它:

vector< vector<int> > agrid(sizeX, vector<int>(sizeY));

try {
agrid[-1][-1] = 5; //throws an out-of-range
}
catch (const std::out_of_range& e) {
cout << "Out of Range error.";
}

但是,我的代码似乎根本没有发现错误。它似乎仍然想运行 std::terminate。有谁知道这是怎么回事?

最佳答案

如果您希望它抛出异常,请使用 std::vector::at 1 而不是 operator[] :

try {
agrid.at(-1).at(-1) = 5;
}
catch (const std::out_of_range& e) {
cout << "Out of Range error.";
}

1 - 返回对指定位置 pos 的元素的引用,并进行边界检查。如果 pos 不在容器范围内,则抛出 std::out_of_range 类型的异常

关于c++ - 在 vector 的 vector 上捕获 out_of_range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19231015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com