forked from OctaForge/libostd
return a pointer from the "at" methods (which is nullptr on non-existent items)
parent
9f58a6c399
commit
41c0ac0fdd
|
@ -29,8 +29,14 @@ struct Array {
|
|||
T &operator[](Size i) { return p_buf[i]; }
|
||||
const T &operator[](Size i) const { return p_buf[i]; }
|
||||
|
||||
T &at(Size i) { return p_buf[i]; }
|
||||
const T &at(Size i) const { return p_buf[i]; }
|
||||
T *at(Size i) {
|
||||
if (!in_range(i)) return nullptr;
|
||||
return &p_buf[i];
|
||||
}
|
||||
const T *at(Size i) const {
|
||||
if (!in_range(i)) return nullptr;
|
||||
return &p_buf[i];
|
||||
}
|
||||
|
||||
T &front() { return p_buf[0]; }
|
||||
const T &front() const { return p_buf[0]; }
|
||||
|
|
|
@ -288,8 +288,14 @@ public:
|
|||
T &operator[](Size i) { return p_buf.first()[i]; }
|
||||
const T &operator[](Size i) const { return p_buf.first()[i]; }
|
||||
|
||||
T &at(Size i) { return p_buf.first()[i]; }
|
||||
const T &at(Size i) const { return p_buf.first()[i]; }
|
||||
T *at(Size i) {
|
||||
if (!in_range(i)) return nullptr;
|
||||
return &p_buf.first()[i];
|
||||
}
|
||||
const T *at(Size i) const {
|
||||
if (!in_range(i)) return nullptr;
|
||||
return &p_buf.first()[i];
|
||||
}
|
||||
|
||||
T &push(const T &v) {
|
||||
if (p_len == p_cap) reserve(p_len + 1);
|
||||
|
|
|
@ -14,8 +14,8 @@ int main() {
|
|||
assert(x[0] == 2);
|
||||
assert(x[2] == 8);
|
||||
|
||||
assert(x.at(0) == x[0]);
|
||||
assert(x.at(3) == x[3]);
|
||||
assert(*(x.at(0)) == x[0]);
|
||||
assert(*(x.at(3)) == x[3]);
|
||||
|
||||
assert(x.size() == 5);
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ int main() {
|
|||
assert(x[0] == 5);
|
||||
assert(x[2] == 15);
|
||||
|
||||
assert(x.at(0) == x[0]);
|
||||
assert(x.at(3) == x[3]);
|
||||
assert(*(x.at(0)) == x[0]);
|
||||
assert(*(x.at(3)) == x[3]);
|
||||
|
||||
assert(x.data()[0] == x[0]);
|
||||
|
||||
|
|
Loading…
Reference in New Issue