Wie die ArduinoSTL anwenden, speziell vectoren.

Hallo,
hätte 2 Fragen:

  1. Wie kann ich mit C++Vektoren in der Arduino IDE arbeiten?
    Folgendes funktioniert nicht:

#include //#include <ArduinoSTL.h> geht auch nicht
vector v (5);
v[2]= 7;

  1. Gibt es in “Sloeber-Eclipse” auch die Möglichkeit mit der C++ STL für den Arduino zu programmieren?

Vielen Dank!

Robitobi:
Folgendes funktioniert nicht:

#include
vector v (5);
v[2]= 7;

Das kommt wohl sehr auf das verwendete Board an. Oder genauergesagt den Compiler und seine Einbindung in die Arduino IDE. Auf den 32 Bit Teensys funktionieren vector oder auch std::string mittlerweile ohne Probleme. Für die 8 Bitter wurde darauf verzichtet, da gibt es wohl sowohl von der Hardware als auch vom Compiler Einschränkungen.

Für die 8 Bitter wurde darauf verzichtet,

Zum Glück gibts ja Google, und Leute welche das implementiert haben.

Ah vielen Dank! Da mein Arduino Mega ein 8 Bit'ler ist, geht das somit nicht. Hab schon so viel gelesen, aber diese Info blieb mir verborgen.

Danke nochmals

Jein, wie combie schon schrieb, gibt es diverse STL Implementierungen für die 8 Bitter von anderen Autoren.

Das Grundproblem ist allerdings, dass der avr g++ anscheinend keine eigene C++ Standardbibliothek mitbringt, im Gegensatz zur ARM Version. Deswegen geht das nicht "von Haus aus" in der Arduino IDE.

Es gab auch AVRs mal eine STL, aber die Entwicklung wurde scheinbar eingestellt und irgendwann funktionierte das mit der aktuellen Arduino Version nicht mehr. Vielleicht gibt es da inzwischen was neues. Keine Ahnung

Die einfachen Container wie vector und string gingen da auch ohne großen Overhead. Das ist ja nur ein dynamisch verwaltetes Array dass in einer Klasse verpackt ist. Erst bei komplizierten Containern wie Maps macht sich der Speicherverbrauch negativ bemerkbar.

Hallo, vielen Dank nochmal.

Dann sollte sich vielleicht die Bibliothek ArduinoSTL.h (mit Vector) aber auch nicht einbinden lassen wenn die Hardware nicht unterstützt wird. Es gibt ja auch keine Möglichkeit zu sehen welche Funktionalität mit der 8-Bit-Hardware geht und welche nicht, oder?

Das Problem ist nicht die Hardware an sich, sondern die dynamische Speicherverwaltung und der Speicherverbrauch. Da gehts an die Grenzen.