Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

RE: Вопросы по C/C++ (Для новичков)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)
Имя
Сообщение << Старые топики   Новые топики >>
RE: Вопросы по C/C++ (Для новичков) - 2009-12-07 20:05:51.950000   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
точнее надо получить массив
array[номер строки][номер слова]

мне мой вариант кажется костылём =) в си полюбому есть функции типа explode()
Post #: 841
RE: Вопросы по C/C++ (Для новичков) - 2009-12-07 21:15:30.376666   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Я такой функции не знаю, поэтому однозначно бы делал так(приблизительный код):
int deskriptor = open(path, O_RDONLY); //open file int str = 0, &nbsp;&nbsp;&nbsp; word_ = 0; do &nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; read_byte = ::read (deskriptor, buffer, 1);&nbsp; //read bytes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (buffer == ' ') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; word_++; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (buffer == '\n') &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str++; &nbsp;&nbsp;&nbsp; } while (read_byte != 0); int **arr = new int*[str]; int j; for(j = 0; j &lt; str; j++) &nbsp;&nbsp;&nbsp;&nbsp; arr[j] = new int[word_];
Post #: 842
RE: Вопросы по C/C++ (Для новичков) - 2009-12-07 22:13:44.013333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

в си полюбому есть функции типа explode()


http://www.cplusplus.com/reference/clibrary/cstring/strtok/

токенизатора для работы с std::string в стандартной библиотеке C++ нет
Post #: 843
RE: Вопросы по C/C++ (Для новичков) - 2009-12-07 22:52:34.753333   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
Странно, в конце str лишние символы появляются


#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; int main(){ ifstream fp("../test.txt"); string str; if(fp){ while(!fp.eof()){ char *buf=new char[256]; fp.read(buf,256); str.append(buf); delete buf; } fp.close(); }else{ cout &lt;&lt;"File not found\n"; system("pause"); return -1; } cout &lt;&lt;str&lt;&lt;endl; system("pause"); return 0; }
и так тоже

ifstream fp("../test.txt"); char *str=0; if(fp){ fp.seekg(0,ios::end); int size=fp.tellg(); fp.seekg(0,ios::beg); str=new char[size]; fp.read(str,size); fp.close(); }else{ cout &lt;&lt;"File not found\n"; system("pause"); return -1; } printf("%s\n",str);
Post #: 844
RE: Вопросы по C/C++ (Для новичков) - 2009-12-07 23:24:48.653333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
typedef std::vector&lt; std::vector&lt;std::string&gt; &gt; WordMatrix; typedef std::istream_iterator&lt;std::string&gt; WordIterator; std::vector&lt;std::string&gt; tokenizeString(std::string const &amp; line) { &nbsp;&nbsp; &nbsp;std::vector&lt;std::string&gt; words; &nbsp;&nbsp; &nbsp;std::stringstream ls(line); &nbsp;&nbsp; &nbsp;std::copy(WordIterator(ls), WordIterator(), std::back_inserter(words)); &nbsp;&nbsp; &nbsp;return words; } WordMatrix tokenizeFile(const char * filename) { &nbsp;&nbsp; &nbsp;std::ifstream fcin(filename); &nbsp;&nbsp; &nbsp;WordMatrix words; &nbsp;&nbsp; &nbsp;std::string line; &nbsp;&nbsp; &nbsp;while(!fcin.eof()) &nbsp;&nbsp; &nbsp;{ &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;std::getline(fcin, line); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;words.push_back(tokenizeString(line)); &nbsp;&nbsp; &nbsp;} &nbsp;&nbsp; &nbsp;fcin.close(); &nbsp;&nbsp; &nbsp;return words; }
Post #: 845
RE: Вопросы по C/C++ (Для новичков) - 2009-12-07 23:30:34.026666   
Lost_boy

Сообщений: 327
Оценки: 0
Присоединился: 2009-03-25 11:07:27.910000
Почитай тут, там пример есть.
http://www.cplusplus.com/reference/iostream/istream/read/
Лишние символы появляются потому, что ты считываешь по 256 байт, а если на последней итерации ты считал например 100 байт и что с остальными 156? Правильно там мусор, поэтому надо делать проверки и записывать столько сколько есть, использовать столько - сколько есть, иначе постоянно будут ошибки.
Post #: 846
RE: Вопросы по C/C++ (Для новичков) - 2009-12-07 23:40:50.803333   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
Denaturat
ну как всегда озадачил =) спс

я таки сделал, при помощи самописного explode() и второго варианта чтения

bool explode(vector&lt;char*&gt; &arr,char *str,const char *exp="\n"){ char *tok=strtok(str,exp); if(tok==NULL) return false; while(tok!=NULL){ arr.push_back(tok); tok=strtok(NULL,exp); } return true; }
однако не понятно вот тут то откуда бяка
fp.seekg(0,ios::end); int size=fp.tellg(); fp.seekg(0,ios::beg); str=new char[size]; fp.read(str,size);
Post #: 847
RE: Вопросы по C/C++ (Для новичков) - 2009-12-08 02:50:01.300000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

Denaturat
ну как всегда озадачил =) спс


не за что. мне не нравится этот код, но большего из стандартной библиотеки C++, похоже, не выжать. в boost есть нормальный токенайзер, если что
Post #: 848
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 16:10:23.246666   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
как узнать суммарный размер чаров такого вектора
vector<char*>
кроме тупого перебора в цикле и суммирования размеров каждого элемента по отдельности, ничего в голову не пришло
Post #: 849
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 16:26:46.063333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
Гугли: std::for_each и strlen

P.S. char * в твоём контексте - это тупо. Есть же std::string.
Post #: 850
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 16:54:18.123333   
Actek

Сообщений: 604
Оценки: 0
Присоединился: 2008-02-24 10:24:14.710000
quote:

P.S. char * в твоём контексте - это тупо. Есть же std::string.

смотря для какой задачи, стринг больше ресурсов требует
Post #: 851
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 17:04:28.680000   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
_SaZ_
не, в моём случае желательно стандартный тип
quote:

Гугли: std::for_each и strlen

quote:

кроме тупого перебора в цикле и суммирования размеров каждого элемента по отдельности, ничего в голову не пришло

имхо - костыль

мм, почему for_each? почему не for?
Post #: 852
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 17:23:13.373333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
quote:

ORIGINAL: Smelo
мм, почему for_each? почему не for?


Я даже не знаю, что сказать поэтому поводу. Да хоть с goto пиши. Зачем тебе вообще языки высокого уровня?
Post #: 853
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 17:28:03.273333   
_SaZ_

Сообщений: 4329
Оценки: 398
Присоединился: 2008-01-30 02:18:05.553333
quote:

ORIGINAL: Actek
смотря для какой задачи, стринг больше ресурсов требует

На сколько больше ресурсов? Десяток байт на строку?

Ну давай начнём холивар на тему быстродействия и удобства разработки? Только для начала приведи хоть один реальный пример, где в программе на с++ было бы более оправдано использовать char * и каждый раз думать о том, нужно ли выделять / освобождать память, нежели использовать std::string, в контексте быстродействия (я не имею в виду случаи, когда некоторые API требуют явно массив чаров).

P.S. про таких программистов: http://www.newtechusa.com/PPI/talent.asp
Post #: 854
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 19:07:33.040000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

как узнать суммарный размер чаров такого вектора
vector&lt;char*&gt;


что такое суммарный размер чаров? и зачем тебе массив указателей на char?

std::vector&lt;char*&gt; v; v.resize(10); std::cout &lt;&lt; "sequence size in memory is " &lt;&lt; v.size() * sizeof(char*) &lt;&lt; " bytes" &lt;&lt; std::endl;
так ты можешь получить объём, занимаемый в памяти последовательностью. тебе это надо?
Post #: 855
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 19:23:14.150000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

не, в моём случае желательно стандартный тип


std::string ничуть не менее стандартен, чем std::vector; к тому же он всё равно является инстансом шаблона std::basic_string<> для типа char
Post #: 856
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 19:33:18.660000   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

что такое суммарный размер чаров? и зачем тебе массив указателей на char?

нужен аналог php'шной implode()
объединяет массив в строку

на первый взгляд то, протестю когда компилятор под рукой появится
quote:

std::string ничуть не менее стандартен, чем std::vector; к тому же он всё равно является инстансом шаблона std::basic_string&lt;&gt; для типа char

я со стрингом сделал уже просто =)

что посоветуете, реализую аналог php'шного массива,
string only? или сделать всё таки поддержку чаровских строк?
Post #: 857
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 19:55:57.426666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

нужен аналог php'шной implode()


в общем случае - невыполнимо. в C++ произвольный тип может не иметь строкового представления вообще

quote:

ORIGINAL: Smelo

что посоветуете, реализую аналог php'шного массива,


а зачем?
Post #: 858
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 20:03:27.136666   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

а зачем?

чертовски удобная вещь
да и тоскать map и vector поотдельности неудобно
а тут - один объект, общий интерфейс

quote:

в общем случае - невыполнимо. в C++ произвольный тип может не иметь строкового представления вообще

не онаж как чисто строковая идёт
сомневаюсь что может быть ситуация когда придётся int/double или какой-то свой тип преобразовывать
Post #: 859
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 20:06:41.406666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

не онаж как чисто строковая идёт


http://www.zedwood.com/article/109/cpp-implode-function
http://www.daniweb.com/code/snippet216990.html#

quote:

ORIGINAL: Smelo

да и тоскать map и vector поотдельности неудобно
а тут - один объект, общий интерфейс


что значит - таскать map и vector по-отдельности? можешь написать use-case, для которого это будет удобней?
Post #: 860
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 21:00:37.403333   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

http://www.zedwood.com/article/109/cpp-implode-function
http://www.daniweb.com/code/snippet216990.html#

спс, только стринги я сделал уже без проблем. все слёзы в выделении памяти под char
Ps. итератор в эксплоде - жесть имхо =)
quote:

что значит - таскать map и vector по-отдельности? можешь написать use-case, для которого это будет удобней?

ну мап для ассоциативных
вектор для списочных

ну вот у тебя, неужели нет подобных обёрток? ты везде стандартные map/vector гоняешь?
Post #: 861
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 21:07:17.923333   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
в идеале хочу хотя бы половину вот этого всего
http://www.php.ru/manual/ref.array.html
Post #: 862
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 21:15:03.876666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

спс, только стринги я сделал уже без проблем. все слёзы в выделении памяти под char


про выделение памяти до сих пор ни одного вопроса не было, кстати

quote:

ORIGINAL: Smelo

Ps. итератор в эксплоде - жесть имхо =)


если в PHP нет итераторов/энумераторов, то это не значит, что все остальные должны быстро от них отказаться

quote:

ORIGINAL: Smelo

ну мап для ассоциативных
вектор для списочных


стандартных структур данных даже в C++ STD несколько больше, и подобным разделением они не описываются. и да, вектор - это последовательность, к спискам отношения не имеет

quote:

ORIGINAL: Smelo

ну вот у тебя, неужели нет подобных обёрток? ты везде стандартные map/vector гоняешь?


что гоняю? куда гоняю? ты use-case дать можешь или нет?
Post #: 863
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 21:18:54.673333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

в идеале хочу хотя бы половину вот этого всего
http://www.php.ru/manual/ref.array.html


чего именно тебе не хватает?

к слову, вот ещё вариант implode (без разделителя, но его добавить не проблема):

std::vector&lt;std::string&gt; vs; ... std::string c = std::accumulate(vs.begin(), vs.end(), std::string(), std::plus&lt;std::string&gt;());
Post #: 864
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 21:26:11.513333   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

про выделение памяти до сих пор ни одного вопроса не было, кстати

для этого размер нужен был =)
quote:

если в PHP нет итераторов/энумераторов, то это не значит, что все остальные должны быстро от них отказаться

есть, только для экспода итератор непонятно зачем
quote:

стандартных структур данных даже в C++ STD несколько больше, и подобным разделением они не описываются. и да, вектор - это последовательность, к спискам отношения не имеет

ну я пока две альтернативы стандартному массиву для себя определил
quote:

что гоняю? куда гоняю? ты use-case дать можешь или нет?

чего писать то? понятно же что общий интерфейс удобнее, они же схожую задаю реализуют? нет?

ты что и когда используешь вместо стандартных массивов?
Post #: 865
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 21:31:43.570000   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

чего именно тебе не хватает?

explode
implode
array_chunk
array_combine
array_diff_*
array_intersect_*
array_keys
array_values
array_key_exists
array_merge
array_rand
array_reverse
array_slice
array_sum
in_array
array_search

sortirovok
Post #: 866
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 21:38:20.950000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

для этого размер нужен был =)


для этого он не нужен

quote:

ORIGINAL: Smelo

есть, только для экспода итератор непонятно зачем


для того же, для чего и в других случаях. итератор - универсальный концепт для работы со структурами данных

quote:

ORIGINAL: Smelo

чего писать то? понятно же что общий интерфейс удобнее, они же схожую задаю реализуют? нет?


нет. непонятно и не удобнее. это две разных структуры данных

quote:

ORIGINAL: Smelo

ты что и когда используешь вместо стандартных массивов?


структура данных определяется исходя из задачи; я прошу тебя привести пример задачи уже в третий раз. ты можешь это сделать или нет?
Post #: 867
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 21:54:00.136666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

array_diff_*
array_intersect_*
array_merge
array_rand
array_reverse
array_sum


http://www.cplusplus.com/reference/algorithm/set_difference/
http://www.cplusplus.com/reference/algorithm/set_intersection/
http://www.cplusplus.com/reference/algorithm/merge/
http://www.cplusplus.com/reference/algorithm/random_shuffle/
http://www.cplusplus.com/reference/algorithm/reverse/
http://www.cplusplus.com/reference/std/numeric/accumulate/

quote:

ORIGINAL: Smelo

array_key_exists
array_search


http://www.cplusplus.com/reference/stl/map/find/

quote:

ORIGINAL: Smelo

array_slice


http://www.cplusplus.com/reference/stl/list/splice/

quote:

ORIGINAL: Smelo

explode
implode
array_chunk
array_combine
in_array
array_keys
array_values


в явном виде отсутствуют, но реализуются парой строчек
Post #: 868
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 23:44:47.920000   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

структура данных определяется исходя из задачи; я прошу тебя привести пример задачи уже в третий раз. ты можешь это сделать или нет?

задача получить динамический разнотипный ассоциативный многомерный массив
возможность удобной с ним работы

конкретно задачу на Си не могу привети, пока не сталкивался, недавно ж начал учить и то с перерывами
Post #: 869
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 23:47:16.743333   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

для этого он не нужен

ну фиг знает, вот так пишу не работает, больше вариантов нет

char *implode(vector&lt;char*&gt; arr,const char *imp){ char *res=NULL; for(int i=0;i&lt;arr.size();i++){ res=strcat(res,arr[i]); if(i!=arr.size()-1) res=strcat(res,imp); } return res; }
Post #: 870
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 23:51:06.386666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

задача получить динамический разнотипный ассоциативный многомерный массив


зачем? я не прошу задачи на C, я прошу задачу в принципе - любой use-case, для которого нужна такая уродливая конструкция
Post #: 871
RE: Вопросы по C/C++ (Для новичков) - 2009-12-11 23:58:11.646666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

ну фиг знает, вот так пишу не работает, больше вариантов нет


плохо. res должен указывать на зарезервированное место в памяти, достаточное для хранения сконкатенированной строки (включая разделители). поскольку ты используешь C-style строки, их длинна должна вычислятся с помощью strlen (подсчётом элементов до '\0')
Post #: 872
RE: Вопросы по C/C++ (Для новичков) - 2009-12-12 00:00:43.360000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
касательно костыля - утверждать подобные вещи можно, только зная язык. ты его не знаешь. большая часть косяков на данный момент - лично твои ошибки и незнание, к C и C++ имеющие весьма опосредованное отношение
Post #: 873
RE: Вопросы по C/C++ (Для новичков) - 2009-12-12 00:03:01.926666   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

для которого нужна такая уродливая конструкция

какая? это пхпшная чтоли уродливая..?

ну нет такой задачи, любую можно разложить на векторы мапы листы и пр
Post #: 874
RE: Вопросы по C/C++ (Для новичков) - 2009-12-12 00:06:56.896666   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

какая?


динамический разнотипный ассоциативный многомерный массив

так use-case будет наконец, или нет? или ты просто в принципе не разбираешься в структурах данных, а PHP-шный массив хвалишь потому как к нему привык?
Post #: 875
RE: Вопросы по C/C++ (Для новичков) - 2009-12-12 00:28:26.226666   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

плохо. res должен указывать на зарезервированное место в памяти, достаточное для хранения сконкатенированной строки (включая разделители). поскольку ты используешь C-style строки, их длинна должна вычислятся с помощью strlen (подсчётом элементов до '\0')

а я про что, как же ещё, кроме как подсчитать сумму размеров всех элементов вектора + сумму размеров разделителя
quote:

касательно костыля - утверждать подобные вещи можно, только зная язык. ты его не знаешь. большая часть косяков на данный момент - лично твои ошибки и незнание, к C и C++ имеющие весьма опосредованное отношение

какого костыля? ты про подсчёт в цикле
quote:

так use-case будет наконец, или нет?

ня
функция проверяет наличие контейнеров-модулей-дейтсвий
возвращает

array(
"container1"=>array("modul1"=>true,"modul2"=>array("action1""action2")),
"container2"=>array("modul1"=>false)
"container3"=>false,
/*….**
)

другая проходит по нему удаляет все ЛЖИ

динамический ассоциативный многомерный разнотипный массив =)
quote:

а PHP-шный массив хвалишь потому как к нему привык?

я его не хвалю, но привык
хочу так же в си

что ты предлогаешь? не делать своего апи, юзать стандартное? мне кажется неудобным оно
Post #: 876
RE: Вопросы по C/C++ (Для новичков) - 2009-12-12 02:04:43.480000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

что ты предлогаешь?


писать на PHP
Post #: 877
RE: Вопросы по C/C++ (Для новичков) - 2009-12-12 02:06:18.900000   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

функция проверяет наличие контейнеров-модулей-дейтсвий


это кусок кода. можно ТЗ на него? иными словами, зачем нужна эта функция, и зачем нужен такой массив?
Post #: 878
RE: Вопросы по C/C++ (Для новичков) - 2009-12-12 02:46:38.273333   
Denaturat

Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
quote:

ORIGINAL: Smelo

подсчитать сумму размеров всех элементов вектора + сумму размеров разделителя


тебе не сумму размеров считать надо - размер указателя определяется архитектурой, и толку тебе от него никакого; тебе надо считать длинну строк, на которые указывает char *

#include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;functional&gt; #include &lt;cstring&gt; struct sizeAcc : public std::binary_function&lt;const char *, size_t *, void&gt; { void operator()(const char * str, size_t * size) const { *size += strlen(str); } }; size_t vSize(std::vector&lt;const char *&gt; const & v, const char * delim) { size_t res = (v.size() - 1) * strlen(delim); std::for_each(v.begin(), v.end(), std::bind2nd(sizeAcc(), &res)); return res; }
вот так это должно выглядеть
Post #: 879
RE: Вопросы по C/C++ (Для новичков) - 2009-12-12 10:15:32.940000   
Smelo

Сообщений: 119
Оценки: 0
Присоединился: 2009-09-27 15:48:37.386666
quote:

это кусок кода. можно ТЗ на него? иными словами, зачем нужна эта функция, и зачем нужен такой массив?

часть АПИ, проходит по всем контейнерам. возвращает для них список модулей и действий, если false значит неактивный, true - активный но только по дефолтным модулю/дейтсвию

массив такой потому что это рационально для такого "ТЗ"
quote:

вот так это должно выглядеть

спс, тоесть без цикла нельзя?
quote:

тебе не сумму размеров считать надо - размер указателя определяется архитектурой, и толку тебе от него никакого; тебе надо считать длинну строк, на которые указывает char *

Я это же имел ввиду просто выразился нечётко
Post #: 880
Страниц:  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [22] 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
Все форумы >> [Компилируемые языки] >> RE: Вопросы по C/C++ (Для новичков)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.