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]; }
|
T &operator[](Size i) { return p_buf[i]; }
|
||||||
const T &operator[](Size i) const { return p_buf[i]; }
|
const T &operator[](Size i) const { return p_buf[i]; }
|
||||||
|
|
||||||
T &at(Size i) { return p_buf[i]; }
|
T *at(Size i) {
|
||||||
const T &at(Size i) const { return p_buf[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]; }
|
T &front() { return p_buf[0]; }
|
||||||
const T &front() const { 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]; }
|
T &operator[](Size i) { return p_buf.first()[i]; }
|
||||||
const T &operator[](Size i) const { 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]; }
|
T *at(Size i) {
|
||||||
const T &at(Size i) const { return p_buf.first()[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) {
|
T &push(const T &v) {
|
||||||
if (p_len == p_cap) reserve(p_len + 1);
|
if (p_len == p_cap) reserve(p_len + 1);
|
||||||
|
|
|
@ -14,8 +14,8 @@ int main() {
|
||||||
assert(x[0] == 2);
|
assert(x[0] == 2);
|
||||||
assert(x[2] == 8);
|
assert(x[2] == 8);
|
||||||
|
|
||||||
assert(x.at(0) == x[0]);
|
assert(*(x.at(0)) == x[0]);
|
||||||
assert(x.at(3) == x[3]);
|
assert(*(x.at(3)) == x[3]);
|
||||||
|
|
||||||
assert(x.size() == 5);
|
assert(x.size() == 5);
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,8 @@ int main() {
|
||||||
assert(x[0] == 5);
|
assert(x[0] == 5);
|
||||||
assert(x[2] == 15);
|
assert(x[2] == 15);
|
||||||
|
|
||||||
assert(x.at(0) == x[0]);
|
assert(*(x.at(0)) == x[0]);
|
||||||
assert(x.at(3) == x[3]);
|
assert(*(x.at(3)) == x[3]);
|
||||||
|
|
||||||
assert(x.data()[0] == x[0]);
|
assert(x.data()[0] == x[0]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue