Векторы в Arduino
Я делаю вектор "путевых точек" на Arduino. Каждая путевая точка-это объект. Arduino, очевидно, нужно будет хранить несколько путевых точек для навигации путевых точек. Но вместо того, чтобы хранить эти точки в стандартной запрограммированного блока, пользователь должен иметь возможность добавлять, удалять путевые точки и перемещать их. К сожалению, Arduino не предлагает векторный тип в качестве встроенной библиотеки.
в настоящее время я рассматриваю два опции:
на контейнер для таких объектов, как C++ 'vector'?, кто-то разместил библиотеку общего назначения. Он не содержит никаких операций удаления индекса или перемещения. Но он содержит некоторые стратегии управления памятью.
Я использовал Танос, dealloc, памятью в прошлом. Но мне совсем не нравится этот вариант, особенно с классами. Но это лучший вариант в моем senario?
какой из них является лучшим путем, чтобы пойти вниз?
4 ответов
стандартный C++ для Arduino может быть вариант. Он позволяет использовать STL вектор в Arduino.
звучит так, как будто вы хотите реализовать простой связанный список. Список ссылок позволяет перемещать объекты (точки, в вашем случае) без накладных расходов, связанных с векторами на C++.
вот реализация на GitHub.
arduino имеет ограниченную память, поэтому вам нужно знать, сколько путевых точек вы позволите. В этом случае простой массив для хранения указателей памяти (адресов) выделенных путевых точек обеспечит необходимую последовательность/порядок. Сохранение одного слота массива свободным в качестве рабочей области позволит перемещать путевые точки (переупорядочивать).
вы также можете иметь фиксированный массив структур путевых точек и включать переменную в структуру, если путевая точка используется или нет. При добавлении путевой точки все, что вам нужно пройти через массив, пока не найдете структуру, которая не используется.