我还添加了void Clear() - 方法。
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
我正在询问这个Vector类。
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类中添加"插入" -method(arduino使用C ++但没有标准的矢量方法)?
Vector<Sensor*> sensors;
我有另一个班级Sensor
,我使用这样的矢量。
push.back(new Sensor (1,1,"Sensor_1",2));
是否可以逐个向此向量类添加值?怎么做?
我还想问其他问题。
如何为此Vector&#34;传感器调用删除/调用析构函数&#34;所有指针都删除了吗?或传感器矢量被删除?我想清除数据,然后向其中添加数据。
答案 0 :(得分:1)
如果要在向量的末尾添加项目,请使用上面引用的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指出的那样,如果你要进行大量的插入操作,你可能会更好地使用链表,特别是如果你要存储的数据很大和/或有一个复杂的移动算子。