return a pointer from the "at" methods (which is nullptr on non-existent items)

master
Daniel Kolesa 2015-06-28 22:16:13 +01:00
parent 9f58a6c399
commit 41c0ac0fdd
4 changed files with 20 additions and 8 deletions

View File

@ -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]; }

View File

@ -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);

View File

@ -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);

View File

@ -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]);