<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Глобальные таблицы Lua на C++]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Глобальные таблицы Lua на C++ форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 03 May 2026 06:39:26 +0300</pubDate>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36862/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_VPl3o0Qh" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Ну например:<br />=============<br /><B>enum {};</B> <br />
			<i>10.03.2019 19:01:42, новичок.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36862/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36862/topic3961/</guid>
			<pubDate>Sun, 10 Mar 2019 19:01:42 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message36860/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br />Вы удивитесь, но с большой вероятностью у вас обработка таблиц будет медленнее, чем в луа.<br />Причина тому в индексе У вас - стринг, а в луа хеш.<br />=============<br /><br />Вернулся к этой теме. Прошу пояснить эту реплику Николая. <br />Вот мап на Си++:<br />
====code====
<pre>&nbsp;&nbsp;std::map &#60; std::string, int &#62;&nbsp;&nbsp;period_muvinga;
&nbsp;&nbsp;period_muvinga&#91; "GAZP" &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 23 ;
&nbsp;&nbsp;period_muvinga&#91; "SBER" &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 19 ;
&nbsp;&nbsp;period_muvinga&#91; "GMKN" &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 20 ;</pre>
=============
Стринг в роли индекса. Николай пишет, что это медленно. <br />ОК. А что если каждой акции задать число? Ну например:<br />
====code====
<pre>&nbsp;&nbsp;period_muvinga&#91; 1 &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 23 ; 
&nbsp;&nbsp;period_muvinga&#91; 2 &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 19 ;
&nbsp;&nbsp;period_muvinga&#91; 3 &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 20 ;</pre>
=============
Так будет быстрее? <br />
			<i>10.03.2019 17:38:59, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message36860/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message36860/topic3961/</guid>
			<pubDate>Sun, 10 Mar 2019 17:38:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33234/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br />Вы удивитесь, но с большой вероятностью у вас обработка таблиц будет медленнее, чем в луа. <br />Причина тому в индексе У вас - стринг, а в луа хеш.<br /><br />=============<br />Как тогда быть? Может быть использовать другой контейнер? <br />
			<i>16.09.2018 18:33:21, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33234/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33234/topic3961/</guid>
			<pubDate>Sun, 16 Sep 2018 18:33:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33228/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_Bx3Ew5V6" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />На stackoverflow ответили:<br />Надо использовать map<br />
====code====
<pre>&nbsp;&nbsp; # include&nbsp;&nbsp;&#60; iostream &#62;&nbsp;&nbsp;# include&nbsp;&nbsp;&#60; map &#62; 
 # include&nbsp;&nbsp;&#60; string &#62; 

int main ()
{
&nbsp;&nbsp;std::map &#60; std::string, int &#62;&nbsp;&nbsp;period_muvinga;

&nbsp;&nbsp;period_muvinga&#91; "GAZP" &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 23 ;
&nbsp;&nbsp;period_muvinga&#91; "SBER" &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 19 ;
&nbsp;&nbsp;period_muvinga&#91; "GMKN" &#93;&nbsp;&nbsp;=&nbsp;&nbsp; 20 ;

&nbsp;&nbsp;//&nbsp;&nbsp;Iterate over all the key,value pairs&nbsp;&nbsp;in&nbsp;&nbsp;map
&nbsp;&nbsp;//
&nbsp;&nbsp; for&nbsp;&nbsp;(const auto&nbsp;&nbsp;&#38;&nbsp;&nbsp;p: period_muvinga)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Extract key from pair
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::string ticker&nbsp;&nbsp;=&nbsp;&nbsp;p.first;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Extract value from pair
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int period&nbsp;&nbsp;=&nbsp;&nbsp;p.second;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout&nbsp;&nbsp;&#60;&nbsp;&nbsp;&#60;&nbsp;&nbsp;ticker&nbsp;&nbsp;&#60;&nbsp;&nbsp;&#60;&nbsp;&nbsp; " = "&nbsp;&nbsp; &#60;&nbsp;&nbsp;&#60;&nbsp;&nbsp;period&nbsp;&nbsp;&#60;&nbsp;&nbsp;&#60;&nbsp;&nbsp;std::endl;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp; return&nbsp;&nbsp; 0 ;
}&nbsp;&nbsp;</pre>
=============
<br />Для других целей - более сложных - мне остаётся не понятным в какой части dll объявлять этот массив.<br />Замысел вкратце.<br />Объявить массив map с названием average_bid. Вопрос где это делать?<br />Ключи массива - тикеры акций. объявляются вместе с массивом.<br />Значения массива - векторы, накапливающие биды за 100 колбеков OnQuote. Это я умею. Цель - посчитать среднее арифметическое бидов за 100 приходов колбека.<br />---<br />Использовать OnInit пока не хочу, потому что у меня в нём и так уже в Луа 50 строчек кода, объявляющих таблицы и переменные.<br />=============<br />Вы удивитесь, но с большой вероятностью у вас обработка таблиц будет медленнее, чем в луа.<br />Причина тому в индексе У вас - стринг, а в луа хеш. <br />
			<i>16.09.2018 15:27:41, Николай  Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33228/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33228/topic3961/</guid>
			<pubDate>Sun, 16 Sep 2018 15:27:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33222/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Яндекс такси ведёт активный набор водителей! <br />Практически по всей России!!! <br />З/П 90-120Т.Р./МЕС. <br /> <br /><noindex><a href="http://seo-swat.ru//rLjFh" target="_blank" rel="nofollow">&lt;img src=&quot;https://cdn-st1.rtr-vesti.ru/vh/pictures/hdr/144/102/4.jpg&quot; alt=&quot;Пользователь добавил изображение&quot; border=&quot;0&quot; /&gt;</a></noindex> <br /> <br />Только города: Барнаул, Белгород, Владимир, Волгоград, Воронеж, Дзержинск, Екатеринбург, Ижевск, Иркутск, Кострома, Краснодар, Красноярск, Курган, Ленинградская область, Магнитогорск, Москва, Московская область, Нижневартовск, Нижний Новгород, Новосибирск, Омск, Пермь, Рязань, Самара, Санкт-Петербург, Сургут, Тольятти, Томск, Тюмень, Ханты-Мансийский автономный округ, Челябинск, Ярославль. <br /> <br />Оформление заявки занимает 20сек. <br />
			<i>15.09.2018 12:47:55, Elenatic.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33222/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33222/topic3961/</guid>
			<pubDate>Sat, 15 Sep 2018 12:47:55 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33221/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			На stackoverflow ответили:<br />Надо использовать map<br />
====code====
<pre>#include &#60;iostream&#62;#include &#60;map&#62;
#include &#60;string&#62;

int main ()
{
&nbsp;&nbsp;std::map&#60;std::string, int&#62; period_muvinga;

&nbsp;&nbsp;period_muvinga&#91;"GAZP"&#93; = 23;
&nbsp;&nbsp;period_muvinga&#91;"SBER"&#93; = 19;
&nbsp;&nbsp;period_muvinga&#91;"GMKN"&#93; = 20;

&nbsp;&nbsp;//&nbsp;&nbsp;Iterate over all the key,value pairs in map
&nbsp;&nbsp;//
&nbsp;&nbsp;for (const auto &#38; p: period_muvinga)
&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Extract key from pair
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::string ticker = p.first;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// Extract value from pair
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int period = p.second;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;std::cout &#60;&#60; ticker &#60;&#60; " = " &#60;&#60; period &#60;&#60; std::endl;
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;return 0;
}</pre>
=============
<br />Для других целей - более сложных - мне остаётся не понятным в какой части dll объявлять этот массив.<br />Замысел вкратце.<br />Объявить массив map с названием average_bid. Вопрос где это делать?<br />Ключи массива - тикеры акций. объявляются вместе с массивом.<br />Значения массива - векторы, накапливающие биды за 100 колбеков OnQuote. Это я умею. Цель - посчитать среднее арифметическое бидов за 100 приходов колбека.<br />---<br />Использовать OnInit пока не хочу, потому что у меня в нём и так уже в Луа 50 строчек кода, объявляющих таблицы и переменные. <br />
			<i>15.09.2018 11:16:24, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33221/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33221/topic3961/</guid>
			<pubDate>Sat, 15 Sep 2018 11:16:24 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33217/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Антон, с этим я уже разобрался, и в первую очередь благодаря Вам ;)<br />Но я имел в виду другое. Уже внутри кода dll мне придётся работать с тем, что в Луа мне знакомо как таблицы.<br />У меня 55 инструментов.<br />Я хочу посчитать по ним средний бид за 100 итераций (за 100 колебаний стакана).<br />Принимать этот бид в dll я уже могу. Но теперь мне надо где-то накапливать данные по каждой бумаге.<br />В Луа я бы это делал в таблицах типа:<br />average_bid&#91;sec&#93;<br />А в Си++ где их хранить? <br />
			<i>14.09.2018 23:37:35, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33217/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33217/topic3961/</guid>
			<pubDate>Fri, 14 Sep 2018 23:37:35 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33216/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_seoDRTIj" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />Прошу подсказать какой аналог глобальной таблицы Луа для Си++<br /><br />=============<br />по индексу LUA_GLOBALSINDEX лежит адрес таблицы
====code====
<pre>//ticker_list="GAZP,SBER,GMKN" -- остальное аналогично
lua_pushstring(L, "GAZP,SBER,GMKN");
lua_setfield(L, LUA_GLOBALSINDEX, "ticker_list");
</pre>
=============
<br />====quote====<br /><a class="blog-p-user-name" id="bp_GoiLHUjP" href="/user/3905/" bx-tooltip-user-id="3905">Let_it_go</a> написал:<br />в какой части кода это объявлять?<br />=============<br />в любой где есть lua_State.(как и в скрипте). Как вообще можно было придумать dllmain, если там вообще нету стейта луа.<br />например инициализация переменных в OnInit:<br />делается аналогично верхнему коду
====code====
<pre>static int onInit(lua_State* L) {&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushstring(L, "GAZP,SBER,GMKN");
&nbsp;&nbsp;&nbsp;&nbsp;lua_setfield(L, LUA_GLOBALSINDEX, "ticker_list");
}

extern "C" __declspec(dllexport) int luaopen_plugin(lua_State *L) {
&nbsp;&nbsp;&nbsp;&nbsp;lua_pushcfunction(L, onInit);
&nbsp;&nbsp;&nbsp;&nbsp;lua_setfield(L, LUA_GLOBALSINDEX, "onInit");
&nbsp;&nbsp;&nbsp;&nbsp;return 0;
}</pre>
=============
советую почитать на досуге все ответы практически там есть<br /><noindex><a href="http://www.lua.org/manual/5.1/manual.html" target="_blank" rel="nofollow">http://www.lua.org/manual/5.1/manual.html</a></noindex> <br />
			<i>14.09.2018 23:24:39, Антон.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33216/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33216/topic3961/</guid>
			<pubDate>Fri, 14 Sep 2018 23:24:39 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Глобальные таблицы Lua на C++</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message33215/topic3961/">Глобальные таблицы Lua на C++</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Прошу подсказать какой аналог глобальной таблицы Луа для Си++<br />Совсем точноЙ формулировкой вопроса будет, как то же самое написать на Си++<br />
====code====
<pre>ticker_list="GAZP,SBER,GMKN"
period_muvinga={}
period_muvinga.GAZP=23
period_muvinga.SBER=19
period_muvinga.GMKN=20
for sec in string.gmatch(ticker_list,"%a+") do
&nbsp;&nbsp;&nbsp;local period=period_muvinga&#91;sec&#93;
end</pre>
=============
и второй вопрос.<br />Когда дойдёт дело до объявления чего-то глобального в Си++ (то что является ответом на первый вопрос), в какой части кода это объявлять?<br />Я пока не могу придумать ничего лучше кроме как здесь. Речь идёт про dll, написанную на Си++:
====code====
<pre>// стандартная точка входа для DLL
BOOL APIENTRY DllMain(HANDLE hModule,
&nbsp;&nbsp;&nbsp;DWORD&nbsp;&nbsp;ul_reason_for_call,
&nbsp;&nbsp;&nbsp;LPVOID lpReserved
)
{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ОБЪЯВЛЕНИЕ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ
&nbsp;&nbsp;&nbsp;return TRUE;
}
</pre>
============= <br />
			<i>14.09.2018 20:49:23, Let_it_go.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message33215/topic3961/</link>
			<guid>http://forum.quik.ru/messages/forum10/message33215/topic3961/</guid>
			<pubDate>Fri, 14 Sep 2018 20:49:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
