自己的 arduino 向量类 (c++)

Own vector class for arduino (c++)

本文关键字:c++ arduino 向量 自己的      更新时间:2023-10-16

我还添加了void Clear()-method。

https://redstoner.com/forums/threads/840-minimal-class-to-replace-std-vector-in-c-for-arduino

https://forum.arduino.cc/index.php?topic=45626.0

我问的是这个向量类。

void push_back(Data const &x) {
  if (d_capacity == d_size) resize();
  d_data[d_size++] = x;
}; // Adds new value. If needed, allocates more space

如何将"插入"方法添加到此 Vector 类(arduino 使用C++但没有标准矢量方法)?

Vector<Sensor*> sensors;

我还有一个类Sensor,我使用这样的向量。

push.back(new Sensor (1,1,"Sensor_1",2));

是否可以将值一一添加到此向量类中?怎么做呢?


我还想问其他问题。

如何为此矢量"传感器"调用删除/调用析构函数,以便删除所有指针?还是传感器矢量被删除?我想清除数据,然后向其添加数据。

如果要

将项目添加到向量的末尾,请使用上面引用的push_back方法。如果要在矢量中的其他位置添加项目,则需要添加自己的方法,该方法在必要时重新调整大小,将插入位置上方的元素向上移动一个位置,然后将新元素复制到正确的插槽中。像这样的东西(未经测试):

void insert_at(size_t idx, Data const &data) {
    assert(idx < d_size);
    if (d_capacity == d_size) {
        resize();
    }
    for (size_t i = d_size; i > idx; --i) {
        d_data[i] = std::move(d_data[i - 1]);
    }
    d_data[idx] = data;
    ++d_size;
}

正如 Nacho 指出的那样,如果您要执行大量此类插入操作,那么最好使用链表,特别是如果您存储的数据很大和/或具有复杂的移动运算符。