slava68: (Default)
[personal profile] slava68
Ну вот, не собирался я так глубоко изучать С++, надеялся обойтись "малой кровью". Не выходит :-(
Передать вектор неизвестного размера в функцию, а затем передать туда же массив известного размера никак не получается.
-------------
Пока мало что понимаю :-(

Date: 2014-07-16 12:53 pm (UTC)
From: [identity profile] ottello-pic.livejournal.com
а если ты начал именно C++, то это объектный язык, и передавать объекты можно по указателю.

Date: 2014-07-16 02:26 pm (UTC)
From: [identity profile] slava68.livejournal.com
Вот и не получилось никак :-(
Потом получилось по ссылке, но радости это не принесло. Экономия памяти составила около "0".

Вот, я тут на форуме ардуино спрашивал: http://arduino.ru/forum/programmirovanie/ispolzovanie-ukazatelei-ssylok-i-vektorov

Date: 2014-07-16 02:37 pm (UTC)
From: [identity profile] ottello-pic.livejournal.com
я не очень понял, что ты делаешь... Но судя по коментариям ты заполняешь вектор до бесконечности... Ну и логично, что когда то память кончается. Так? Если да, то попробуй использовать что то типа стека. Т.е. обработал данные удали из очереди.

Date: 2014-07-16 02:42 pm (UTC)
From: [identity profile] slava68.livejournal.com
Мне надо 1 раз получить много адресов датчиков, потом несколько раз их опросить, потом снова просканировать сеть и получить новый массив адресов и снова некоторое количество раз их опрашивать.
Если количество датчиков изменилось с момента крайнего сканирования сети - сделать об этом запись в логе.

Date: 2014-07-16 02:47 pm (UTC)
From: [identity profile] ottello-pic.livejournal.com
Ну и как ты делаешь эту задачу? Опиши алгоритм и грабли на какие наткнулся?

Date: 2014-07-16 02:58 pm (UTC)
From: [identity profile] slava68.livejournal.com
Вот крайний текст http://pastebin.com/2yx8YhLU

Date: 2014-07-16 03:00 pm (UTC)
From: [identity profile] ottello-pic.livejournal.com
Опиши по русски чего ты делаешь? чтобы код не разбирать...

Date: 2014-07-16 03:06 pm (UTC)
From: [identity profile] slava68.livejournal.com
Я там так всё закоментарил по русски, что объяснять - это по новой переписать.

Я программированием занялся две недели назад, поэтому использую только поверхностные решения.
Проблема, в которую упёрся - почти кончилась память в кристалле :-( , а у меня ещё столько планов ....

Date: 2014-07-16 06:07 pm (UTC)
From: [identity profile] ottello-pic.livejournal.com
Да я вообще просил общую идею расписать, может я предложил бы оптимизировать её... Просто код разбирать даже с комментариями сложно не зная для чего он...

Date: 2014-07-16 03:09 pm (UTC)
From: [identity profile] slava68.livejournal.com
Я сейчас собрался блок-схемы своего кода нарисовать :-))
Вот такую замечательную программку нашёл для этого :
http://www.fatesoft.com/s2f/index.htm уже с лекарством :-)
Edited Date: 2014-07-16 03:13 pm (UTC)

Date: 2014-07-16 03:47 pm (UTC)
From: [identity profile] slava68.livejournal.com
Денис, а ты разбираешься в С++ ?

Почему, когда я инициализирую вектор массивом сразу: vector v_addr(addr, addr+8);
У меня расходуется памяти 23408 байт (с учётом всей программы),
когда инициализирую пустой вектор, а потом его заполняю :
vector v_addr;
for ( byte x = 0; x < 8; x++) v_addr.push_back(addr[x]); // Преобразовываем массив с адресом датчика в вектор для передачи для записи на SD карту
то получается 23274 байта после компиляции.
Хотя в интернете про вектор пишут, что должно быть наоборот.

Date: 2014-07-16 06:05 pm (UTC)
From: [identity profile] ottello-pic.livejournal.com
В первом случае ты объявляешь addr кол-во элементов и им сразу выделяется память. (Я это из описания прочел). Вообще вектор хорош тем, что это динамический массив с методами доступа к элементам... Так что лучше наверное пользовать его динамическим...

P.S. С++ я только теоретически знаю.

Date: 2014-07-16 06:08 pm (UTC)
From: [identity profile] ottello-pic.livejournal.com
Я сейчас вялотекуще пытаюсь с Objective-C разбираться... Там многое похоже идеологически, но при этом всё совсем по другому )

Date: 2014-07-16 03:49 pm (UTC)
From: [identity profile] slava68.livejournal.com
Как сделать, чтобы отправить в функцию массив или вектор, а принять текстовую строку ?
С массивом такой фокус проходит, а вот с вектором не катит :-(

Date: 2014-07-16 06:06 pm (UTC)
From: [identity profile] ottello-pic.livejournal.com
Функции аргументом передавай указатель на вектор, и работай с указателем внутри...

Date: 2014-07-20 09:21 am (UTC)
From: [identity profile] ottello-pic.livejournal.com
Ну что получилось? А то что то ты не отвечаешь...

Date: 2014-07-20 11:36 am (UTC)
From: [identity profile] slava68.livejournal.com
Пока работает. Воплощаю дальнейшие планы. Купить часы реального времени на шину 1-Wire в Тамбове не удалось :-(

Profile

slava68: (Default)
slava68

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324 252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 7th, 2026 05:12 pm
Powered by Dreamwidth Studios