В 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.2020operator[]
наstd::vector
да извършва проверка на границите в DEBUG, но не и в RELEASE. - person Daniel Langr   schedule 14.09.2020