Векторы в Arduino

Я делаю вектор "путевых точек" на Arduino. Каждая путевая точка-это объект. Arduino, очевидно, нужно будет хранить несколько путевых точек для навигации путевых точек. Но вместо того, чтобы хранить эти точки в стандартной запрограммированного блока, пользователь должен иметь возможность добавлять, удалять путевые точки и перемещать их. К сожалению, Arduino не предлагает векторный тип в качестве встроенной библиотеки.

в настоящее время я рассматриваю два опции:

  1. на контейнер для таких объектов, как C++ 'vector'?, кто-то разместил библиотеку общего назначения. Он не содержит никаких операций удаления индекса или перемещения. Но он содержит некоторые стратегии управления памятью.

  2. Я использовал Танос, dealloc, памятью в прошлом. Но мне совсем не нравится этот вариант, особенно с классами. Но это лучший вариант в моем senario?

какой из них является лучшим путем, чтобы пойти вниз?

4 ответов


стандартный C++ для Arduino может быть вариант. Он позволяет использовать STL вектор в Arduino.


звучит так, как будто вы хотите реализовать простой связанный список. Список ссылок позволяет перемещать объекты (точки, в вашем случае) без накладных расходов, связанных с векторами на C++.

вот реализация на GitHub.


arduino имеет ограниченную память, поэтому вам нужно знать, сколько путевых точек вы позволите. В этом случае простой массив для хранения указателей памяти (адресов) выделенных путевых точек обеспечит необходимую последовательность/порядок. Сохранение одного слота массива свободным в качестве рабочей области позволит перемещать путевые точки (переупорядочивать).


вы также можете иметь фиксированный массив структур путевых точек и включать переменную в структуру, если путевая точка используется или нет. При добавлении путевой точки все, что вам нужно пройти через массив, пока не найдете структуру, которая не используется.