lists return 0 instead of -1 when insertion fails
This commit is contained in:
@ -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();
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user