|
|
|
|
|
для: Тень
(28.01.2010 в 22:10)
| | C list | |
|
|
|
|
|
|
|
для: Красная_шляпа
(28.01.2010 в 21:20)
| | Си строки сравнивает по их адресам. То есть никак.
Программист (на Си) строки сравнивает функцией strcmp() , то есть побайтово.
php - примерно как программист.
Если говорить о сравнении не просто строк, а о поиске ключей - здесь php считает хеш и локализует поиск по значению хеша. Побайтовая проверка всё равно выполняется. | |
|
|
|
|
автор: Тень (28.01.2010 в 22:10) |
|
|
для: Красная_шляпа
(28.01.2010 в 21:30)
| | Приведи пример на Си, где есть подобное. лол | |
|
|
|
|
|
|
|
для: heed
(28.01.2010 в 21:39)
| | Мне это понятно что функциями, меня интересует немножко другое сам алгоритм работы этих функций
Как оно так выходит, к какому виду строка приводиться
>>> "ab" > "aa"
True
>>> "ab" < "aa"
False
>>> | |
|
|
|
|
|
|
|
для: Красная_шляпа
(28.01.2010 в 21:20)
| | функциями :)
Синтaксис:
[C]
int strcmp( char *string1, char *string2);
int _fstrcmp( char _far *string1, char _far *string2);
int stricmp( char *string1, char *string2);
int _fstricmp( char _far *string1, char _far *string2);
int strcmpi( char *string1, char *string2);
int strncmp ( char *string1, char *string2,
size_t count );
int _fstrncmp ( char _far *string1, char _far *string2,
size_t count );
int strnicmp( char *string1, char *string2,
size_t count );
int _fstrnicmp( char _far *string1, char _far *string2,
size_t count );
[C]
Функции strcmp, stricmp, strncmp и strnicmp рaбoтaют с
nulloкaнчивaющимися стрoкaми. Пaрaметр <string> в этих
функциях oжидaется сoдержaщим null-симвoл (\0), мaркиру-
ющий кoнец стрoки.
Функции strcmpi и stricmp является нечувствительными к
регистру версиями strcmp, a strnicmp - нечувствительнoй
к регистру версией strncmp. Функция strcmpi - стaрый
синoним stricmp. Он пoддерживaется для сoвместимoсти.
Функции strcmp, strcmpi и stricmp срaвнивaют <string1> и
<string2> и вoзврaщaют знaчение, укaзывaющее их oтнoше-
ние:
Знaчение Смысл
[C]
< 0 <string1> меньше, чем <string2>
= 0 <string1> идентичен <string2>
> 0 <string1> бoльше, чем <string2>
[C]
Функции strncmp и strnicmp oперируют, в лучшем случaе,
первыми <count> симвoлaми null-oкaнчивaющимися стрoк.
Strncmp и strnicmp срaвнивaют, в лучшем случaе, первые
<count> симвoлoв <string1> и <string2> и вoзврaщaют
знaчение, укaзывaющее oтнoшение между пoдстрoкaми:
Знaчение Смысл
[C]
< 0 <substring1> меньше, чем <substring2>
= 0 <substring1> идентичнa <substring2>
> 0 <substring1> бoльше, чем <substring2>
[C]
_f... - фoрмы этих функций являются незaвисимыми oт мoде-
ли (large-model) фoрмaми, испoльзующими far-укaзaтели пa-
рaметрoв стрoки и вoзврaщaемых знaчений. Эти незaвисимые
oт мoдели функции мoгут вызывaться из любoй тoчки в прo-
грaмме. Зaметим, чтo незaвисимoй oт мoдели версии strcmpi
не существует. Вы дoлжны испoльзoвaть для этoгo функцию
_fstricmp.
Вoзврaщaемые знaчения для этих функций oписaны выше.
|
в MSVC6эта функция написана так
//<?
int __cdecl strcmp (
const char * src,
const char * dst
)
{
int ret = 0 ;
while( ! (ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst)
++src, ++dst;
if ( ret < 0 )
ret = -1 ;
else if ( ret > 0 )
ret = 1 ;
return( ret );
}
|
| |
|
|
|
|
|
|
|
для: Красная_шляпа
(28.01.2010 в 21:13)
| | Вообще на счет массивов в php по мне все сделано через жопу никто не знает почему при удалении элемента массива не делается так же как в си(переиндексация) | |
|
|
|
|
|
|
|
для: Trianon
(28.01.2010 в 21:16)
| | Как php вообще строки сравнивает? Даже не php а C? | |
|
|
|
|
|
|
|
для: Красная_шляпа
(28.01.2010 в 21:13)
| | а хеш - не тип структуры данных, а методика реализации поиска. | |
|
|
|
|
|
|
|
для: Trianon
(28.01.2010 в 20:38)
| | В питоне нет ассоциативных массивов как нет и обычных массивов php(конечно же все это на самом деле есть но называется по-другому словарь, список(си-шный динамический массив), кортеж(неизменяемый массив)). А хэш я не знаю как эту бурду назвать | |
|
|
|
|
|
|
|
для: Красная_шляпа
(28.01.2010 в 20:20)
| | в php то же самое.
Кончайте ругаться. Читать противно.
Бинарный поиск к поиску по хешу не относится никак.
В php сложности поиска любого ключа по массиву решает движок php.
В нем это самое хеширование интегрировано в реализацию операции "взять элемент массива".
В питоне вроде тоже ассоциативные массивы есть с аналогичным принципом работы.
По-моему, уже и не осталось современных высокоуровневых языков, где таких средств не было бы предоставлено. | |
|
|
|
|