1

lists return 0 instead of -1 when insertion fails

This commit is contained in:
2022-07-20 23:38:54 +02:00
parent 16bde883be
commit 137d433ec0
2 changed files with 16 additions and 16 deletions

View File

@ -145,7 +145,7 @@ public:
std::size_t insert_at(Type e, std::size_t i) override { std::size_t insert_at(Type e, std::size_t i) override {
if (i > size()) { if (i > size()) {
// Error: Space between elements // Error: Space between elements
return -1; return 0;
} }
if (i == size()) { if (i == size()) {
@ -157,7 +157,7 @@ public:
copy_right(i); // Changes pos copy_right(i); // Changes pos
buf[i] = e; buf[i] = e;
} else { } else {
return -1; return 0;
} }
return size(); return size();
@ -177,7 +177,7 @@ public:
++buf_pos; ++buf_pos;
expand(); expand();
} else { } else {
return -1; return 0;
} }
return size(); return size();

View File

@ -46,13 +46,13 @@ public:
using WrapperType = typename Iterator::Type; using WrapperType = typename Iterator::Type;
private: private:
unsigned int num_elements = 0; std::size_t num_elements = 0;
WrapperType* head = nullptr; WrapperType* head = nullptr;
WrapperType* tail = nullptr; WrapperType* tail = nullptr;
std::optional<WrapperType*> get_wrapper(unsigned int i) { std::optional<WrapperType*> get_wrapper(std::size_t i) {
WrapperType* current = head; WrapperType* current = head;
unsigned int pos = 0; std::size_t pos = 0;
while (current != nullptr) { while (current != nullptr) {
if (pos == i) { if (pos == i) {
return current; return current;
@ -87,9 +87,9 @@ public:
} }
// NOTE: Insert copies // NOTE: Insert copies
unsigned int insert_at(Type e, unsigned int i) override { std::size_t insert_at(Type e, std::size_t i) override {
if (i > size()) { if (i > size()) {
return -1; return 0;
} }
if (i == 0) { if (i == 0) {
@ -102,7 +102,7 @@ public:
WrapperType* old_e = get_wrapper(i).value_or(nullptr); WrapperType* old_e = get_wrapper(i).value_or(nullptr);
if (old_e == nullptr) { if (old_e == nullptr) {
return -1; return 0;
} }
WrapperType* new_e = new WrapperType(e); WrapperType* new_e = new WrapperType(e);
@ -116,7 +116,7 @@ public:
return size(); return size();
} }
unsigned int insert_first(Type e) override { std::size_t insert_first(Type e) override {
WrapperType* old_head = head; WrapperType* old_head = head;
head = new WrapperType(e); head = new WrapperType(e);
@ -134,7 +134,7 @@ public:
return size(); return size();
} }
unsigned int insert_last(Type e) override { std::size_t insert_last(Type e) override {
WrapperType* old_tail = tail; WrapperType* old_tail = tail;
tail = new WrapperType(e); tail = new WrapperType(e);
@ -153,7 +153,7 @@ public:
} }
// NOTE: Remove moves // NOTE: Remove moves
std::optional<Type> remove_at(unsigned int i) override { std::optional<Type> remove_at(std::size_t i) override {
if (empty() || i >= size()) { if (empty() || i >= size()) {
return std::nullopt; return std::nullopt;
} }
@ -228,7 +228,7 @@ public:
} }
bool remove(Type e) override { bool remove(Type e) override {
unsigned int pos = 0; std::size_t pos = 0;
WrapperType* wrapper = head; WrapperType* wrapper = head;
while (wrapper != nullptr) { while (wrapper != nullptr) {
if (*wrapper == e) { if (*wrapper == e) {
@ -242,7 +242,7 @@ public:
return false; return false;
} }
std::optional<Type> get(unsigned int i) const override { std::optional<Type> get(std::size_t i) const override {
if (i >= size()) { if (i >= size()) {
return std::nullopt; return std::nullopt;
} }
@ -255,7 +255,7 @@ public:
} }
WrapperType* wrapper = head; WrapperType* wrapper = head;
for (unsigned int pos = 0; pos < i; ++pos) { for (std::size_t pos = 0; pos < i; ++pos) {
wrapper = wrapper->next; wrapper = wrapper->next;
} }
return *wrapper; return *wrapper;
@ -280,7 +280,7 @@ public:
bool empty() const override { bool empty() const override {
return !size(); return !size();
} }
unsigned int size() const override { std::size_t size() const override {
return num_elements; return num_elements;
} }