|
|
|
| как посчитать хеш аналогично как в перле :
my %hash = ();
while(<LOG>){
my ($ip_temp, $host_temp, $string_temp) = split(/\|/, $_);
$hash{$host_temp."|".$ip_temp."|".$string_temp}++;
}
|
нужно посчитать кол-во уникальных элементов массива.
ос линукс компилятор gcc | |
|
|
|
|
|
|
|
для: dima2207
(20.05.2010 в 00:13)
| | А какого типа элементы в массиве? | |
|
|
|
|
|
|
|
для: dima2207
(20.05.2010 в 00:13)
| | Уникальных т.е. больше не встречающихся в данном массиве? В этом случае думаю подойдет конструкция if else. Берем 1й эл-т массива, по очереди сравниваем с остальными, если совпадение то переходим к следующему эл-ту массива если нет ни одного совпадения повышаем счетчик на единицу.
Если честно сам в CPP не разбираюсь, вроде в книге про сортировку где-то более правильные решения видел, а это неэффективный алгоритм. | |
|
|
|
|
|
|
|
для: Miha_drinking_bout
(23.05.2010 в 04:46)
| | да, явно мало эффективный алгоритм особенно если массив пару гигов .
тип массива у меня string | |
|
|
|
|
|
|
|
для: dima2207
(23.05.2010 в 18:31)
| | В Си есть библиотека string.h, представляющая набор функций для работы со строками:
strcmp(st1, st2) – сравнивает строки stl и st2. Возвращает в качестве результата сравнения целую величину:
< 0 когда st1 меньше, чем st2;
= 0 когда st1 равна st2;
> 0 когда stl больше, чем st2.
stricmp(st1, st2) – сравнивает строки st1 и st2, не делая различия между символами в нижнем и верхнем регистре.
strncmp(st1, st2, n) – сравнивает первые n символов строк st1 и st2. | |
|
|
|
|
|
|
|
для: Miha_drinking_bout
(01.06.2010 в 01:59)
| | мда... вы представляете сколько будет выполятся программа если массив пару гигов ? это ж надо сравнить каждый элемент массива с каждым и при этом считать кол-во совпадений.а если данные постоянно обновляются то программа вообще зациклится . | |
|
|
|
|
|
|
|
для: dima2207
(03.06.2010 в 02:14)
| | Не представляю, но догадываюсь. Не судите строго, сам начинаю С изучать и то урывками на сессиях. Возникли такие варианты:
1). Посмотреть как устроена какая нибудь реальная программа.
2). Создать область динамической памяти и т.к. ОЗУ не резиновое подгружать обрабатываемые данные частями по XXXмб. Можно конечно и целиком файл спроецировать в память, не знаю как? Пока с указателями не шибко разбирался(на экзамене разберусь). Записывать промежуточный результат обработки данных. Затем операцию повторять пока не доберемся до конца файла. А вот до алгоритмов сортировки я пока не дошел.
А данные структурированы? | |
|
|
|
|
|
|
|
для: Miha_drinking_bout
(04.06.2010 в 01:06)
| | воощем то задача казалось бы простая , берем первый эллемент массива прогоняем его на предмет соовпадений со всем массивом ставим счетчики и так далее, но опять же повторюсь что при обработки массива размером в пару гигов прога будет очень долго выполнятся даже дольше чем вышеуказанный скрипт на перле , почему так происходит ? неужели в перле реализован какойто более продвинутый алгоритм ? | |
|
|
|