В C++ для вектора v v.at(x)
ведет себя так же, как v[x]
, за исключением того, что при доступе к несуществующему элементу выдается ошибка выхода за границы.
Хотелось бы в идеале всегда использовать v.at(x)
, однако писать не так удобно, как v[x]
. Есть ли способ заставить v[x]
вести себя как v.at(x)
, возможно, используя что-то вроде #define
?
Если нет, есть ли лучшее решение, чтобы всегда выдавать ошибки за пределами границ?
#define
всегда должно быть вашим последним средством. Вам, вероятно, придется написать собственный контейнер для этого, потому чтоoperator[]
нельзя перегружать вне класса. - person churill   schedule 14.09.2020[]
ведет себя идентичноat
, вы можете использовать одну из них. - person Caleth   schedule 14.09.2020std::vector
operator[]
с проверкой границ в DEBUG, а не в RELEASE. - person Daniel Langr   schedule 14.09.2020