как создать Vector?

pahuchiy
Offline
Зарегистрирован: 04.03.2018

Пробую так и выводит нули

#include <vector> //Подключаем директиву vector
using namespace std; //Необходимо использовать пространство имен std

void setup()
{
  Serial.begin (9600);
}

void loop()
{
   vector<int> v(10); //Объявили вектор в десять элементов
   for (int i=0;i<10;i++) v.push_back(i); //Добавили к вектору десять чисел 1,2,3...10
   for (int i=0;i<10;i++) 
   Serial.println(v[i]); //Вывели первые десять чисел вектора на экран
   while(true);
}

 

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

в Дуне пространство имён std ограничивается определением std::nullptr_t

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pahuchiy пишет:

Пробую так и выводит нули

В какой версии IDE Вы это пробовали и выводило нули?

pahuchiy
Offline
Зарегистрирован: 04.03.2018

1.8.5

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В 1.8.5 "из коробки" нет библиотеки STL (в которой живёт vector) и, стало быть, Ваш код скомпилироваться не может. Бибилиотек же есть несколько. Какую именно Вы использовали? Давайте ссылку, я посмотрю и тогда смогу что-нибудь сказать.

Кстати, а нафига Вам нужен vector? Он же в целом довольно бессмысленная вещь. Особенно, если в программе другие коллекции не используются. Зачем?

pahuchiy
Offline
Зарегистрирован: 04.03.2018

ясно. Затрудняюсь ответить насчёт библиотеки STL. Вектор - может и бессмысленная. Только мне его andriano использовать советовал (...ааа, или List он мне советовал? Не помню точно, наверное всё же List).  Я пишу миди-секвенсор. ДКоличество миди-сообщений музыкального проекта заранее не известна. Плюс к этому, нужна будет возможность вставки нового элемента в нужное мне место (а не добавляться в конец), так как читаться (при проигрывании)  вектор будет по порядку. Вы посоветете иную форму хранения данных?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

http://khpi-iip.mipk.kharkiv.edu/library/datastr/book/prt05.html

Изучайте структуры указывающие сами на себя и работа с ними.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

pahuchiy пишет:

ясно. Затрудняюсь ответить насчёт библиотеки STL. 

Упрощу вопрос. В самой IDE нет никакого вектора (и листа тоже). Вы их взяли из какой-то библиотеки. Из какой? Давайте ссылку.

pahuchiy
Offline
Зарегистрирован: 04.03.2018

спасибо. я разобрался с STL, пользуюсь теперь этой https://github.com/zacsketches/Arduino_Vector

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так, вопрос снят?

Sencis
Offline
Зарегистрирован: 26.01.2018

В ситуации когда нужно поместить в массив данные размер которых до их появления не известен можно как-то избежать использования вектора?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Sencis пишет:

В ситуации когда нужно поместить в массив данные размер которых до их появления не известен можно как-то избежать использования вектора?

Можно. Так же, как это реализовано в vector - динамически переаллоцировать память при необходимости.