std::map::at
接受map的key,返回对应的value的引用;
若 at 实参不匹配map的任意 key,则抛出 std::out_of_range 异常
void mapTest()
{
std::map<int, std::string> mps;
mps[1] = "hello";
mps[2] = "world";
mps[3] = "there";
try {
std::cout << mps.at(3) << std::endl;
std::cout << mps.at(10) << std::endl;
}
catch (std::out_of_range) {
std::cout << "access of out of range" << std::endl;
}
}
std::vector::at
自动做边界检查,返回位置n处元素的引用,若位置超出合法界限则抛出 std::out_of_range 异常
void vectorTest()
{
std::vector<int> vecs = { 1,2,3 };
try {
std::cout << vecs.at(0) << std::endl;
std::cout << vecs.at(3) << std::endl;
}
catch (std::out_of_range) {
std::cout << "access of out of range" << std::endl;
}
}
std::deque::at
void dequeTest()
{
std::deque<int> q = { 1,2,3 };
try {
std::cout << q.back() << std::endl;
std::cout << q.at(0) << std::endl;
std::cout << q.at(3) << std::endl;
}
catch (std::out_of_range) {
std::cout << "access of out of range" << std::endl;
}
}
/* 输出
3
1
access of out of range
std::array::at
void arrayTest()
{
std::array<int, 3> arr = {1,2,3};
try {
std::cout << arr.back() << std::endl;
std::cout << arr.at(0) << std::endl;
std::cout << arr.at(3) << std::endl;
}
catch (std::out_of_range) {
std::cout << "access of out of range" << std::endl;
}
}