自己的 arduino 向量类 (c++)
Own vector class for arduino (c++)
我还添加了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 指出的那样,如果您要执行大量此类插入操作,那么最好使用链表,特别是如果您存储的数据很大和/或具有复杂的移动运算符。
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 人脸跟踪arduino代码的优化
- vscode下的Arduino代码出现意外编译错误
- Arduino从Txt读取整数
- Arduino C++在构造函数中用参数声明对象数组
- C++ Boost::asio串行通信与Arduino无法写入
- Arduino millis() - millis() 怎么能等于 0 以外的任何东西?
- 在Arduino中将PWM通道命名为LEDC是否有特定原因
- 'val' Arduino 错误代码之前的预期'('
- 我可以在 Arduino 的库文件夹之外安装库吗?
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- Arduino 用于语句错误。令牌之前的预期')' ';'。如何解决这个问题?
- 无法在 Arduino 中uint8_t数组转换为无符号长整型数组
- Arduino-C++ bool 不会从 false 变为 true
- Arduino:在 loop() 和自定义函数中运行相同的代码时出现问题
- cmsis_compiler.h:在为 Arduino Due 编译 Arduino Tensorflow lite 库
- Arduino SocketIoClient - 没有用于调用的匹配函数
- Arduino无法编译名为SP:"Expected ')' before '(' token"的变量
- 当我尝试通过 arduino 上的引用传递布尔数组时出现问题