Форум программистов, компьютерный форум CyberForum.ru

Как написать максимально оптимизированную функцию поиска длинны строки? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 16:59     Как написать максимально оптимизированную функцию поиска длинны строки? #1
Мысль о максимально оптимизированной функции длинны строки, где строка это указатель на литерал типа char.
Не будем использовать не std::string, не std::wstring, не wchar_t
в функцию передается указатель на строку, вот тело:
C++
1
2
3
4
5
6
7
int main()
{
    char * str= "hello world";
    int v = length(str);
    std::cout << v << std::endl;
    std::cin.get();
}
Пожалуйста подскажите ваши варианты...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 16:59     Как написать максимально оптимизированную функцию поиска длинны строки?
Посмотрите здесь:

C++ Написать функцию рекурсивного бинарного поиска
Написать функцию поиска максимального и минимального элементов одномерного массива C++
C++ Чтение длинны строки из файла
C++ Переделать функцию поиска самой длинной строки так, чтобы она правильно печатала размер произвольно длинной входной строки и воспроизводила ее
C++ Написать функцию поиска структуры с заданным значением
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:08     Как написать максимально оптимизированную функцию поиска длинны строки? #2
что-то ничего кроме функции length не могу придумать))))
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:13  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #3
C++
1
2
3
4
5
6
7
8
9
unsigned int length(const char * str)
{
    const char * p = str;
    while(str != "")
    {
        str++;
    }
    return str-p;
}
Моя функция не работает, думаю надо создавать еще одну переменную, но возможно можно это как-то изменить...

Цитата Сообщение от Atlant_V Посмотреть сообщение
что-то ничего кроме функции length не могу придумать))))
Ну хоть попытался, у меня такое ощущение что вопрос не из разряда, как сменить текст на русский в консоли и надо переносить в раздел для профессионалов )) Никто не заходит в этот пост.
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
23.08.2013, 17:17     Как написать максимально оптимизированную функцию поиска длинны строки? #4
Цитата Сообщение от vbloodv Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
unsigned int length(const char * str)
{
    const char * p = str;
    while(str != "")
    {
        str++;
    }
    return str-p;
}
Ты возвращаешь разницу адресов?

Ты хочешь свой алгоритм написать что-ли? Чем тебя стандартная strlen() к примеру не устраивает?
extenup
53 / 53 / 3
Регистрация: 12.11.2011
Сообщений: 109
23.08.2013, 17:17     Как написать максимально оптимизированную функцию поиска длинны строки? #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
unsigned int length(char *str);
int main(int argc, char *argv[])
{
    char *str = "hello world !!!";
    printf("String length: %d", length(str));
 
    return 0;
}
 
unsigned int length(char *str)
{
    int i = 0;
    while(str[i] != 0) i++;
 
    return i;
}
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:21  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #6
Цитата Сообщение от Hugra Посмотреть сообщение
Ты хочешь свой алгоритм написать что-ли? Чем тебя стандартная strlen() к примеру не устраивает?
Цитата Сообщение от extenup Посмотреть сообщение
unsigned int length(char *str)
Спасибо соратники, я просто практиковался.
Мой код работает только в такой интепретации:
C++
1
2
3
4
5
6
7
8
9
unsigned int length(const char * str)
{
    const char * p = str;
    while(strcmp(str,""))
    {
        str++;
    }
    return str-p;
}
И смысл от него теряется, стандартная функция наиболее быстрая...
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:24     Как написать максимально оптимизированную функцию поиска длинны строки? #7
иногда хочется придумать "велосипед" заново
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:25  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #8
Я ошибся есть еще более сатанитский вариант, вот только экономии памяти достигнуть не получилось,
C++
1
sizeof(char *) = sizeof(int )
C++
1
2
3
4
5
6
7
8
9
unsigned int length(const char * str)
{
    const char * p = str;
    while(str[0] != 0)
    {
        str++;
    }
    return str-p;
}
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:27     Как написать максимально оптимизированную функцию поиска длинны строки? #9
Цитата Сообщение от vbloodv Посмотреть сообщение
у меня такое ощущение что вопрос не из разряда, как сменить текст на русский в консоли и надо переносить в раздел для профессионалов ))
а на счет того, как здесь порой отвечают на вопросы, я с тобой согласен.
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
23.08.2013, 17:28     Как написать максимально оптимизированную функцию поиска длинны строки? #10
Цитата Сообщение от Atlant_V Посмотреть сообщение
иногда хочется придумать "велосипед" заново

Не по теме:

Дело не в этом. Иногда сложно понять , что хочет ТС и для чего. Придумывание велосипедов в процессе обучения обычное дело.
Я пока читаю книгу по C++ напридумывал велосипедов , хоть свою библиотеку функций и классов собирай вместо стандартной. Процесс создания велосипедов, это способ разобраться и понять что и как работает изнутри.

vbloodv
23.08.2013, 17:29  [ТС]
  #11

Не по теме:

Цитата Сообщение от Hugra Посмотреть сообщение
Дело не в этом. Иногда сложно понять , что хочет ТС и для чего. Придумывание велосипедов в процессе обучения обычное дело.
Я пока читаю книгу по C++ напридумывал велосипедов , хоть свою библиотеку функций и классов собирай вместо стандартной. Процесс создания велосипедов, это способ разобраться и понять что и как работает изнутри.
У меня нет таких мотивов, это тестовое задание в одной из IT компаний.

Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:33     Как написать максимально оптимизированную функцию поиска длинны строки? #12
Hugra,
так я не хотел кого-то обидеть. а с тобой полностью согласен!

Добавлено через 3 минуты
vbloodv, ты только собираешься в IТ-компании или уже был там?
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 687
23.08.2013, 17:37     Как написать максимально оптимизированную функцию поиска длинны строки? #13
Как вариант
C++
1
2
3
4
5
int i = 0;
while(s[i] != "\0")
{
++i;
}
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
23.08.2013, 17:39     Как написать максимально оптимизированную функцию поиска длинны строки? #14
Bend3r, маладца. Все гениальное просто
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:46  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #15
Цитата Сообщение от Bend3r Посмотреть сообщение
Как вариант
C++
1
2
3
4
5
int i = 0;
while(s[i] != "\0")
{
++i;
}
Не совсем могу уловить чем этот способ отличается от предложенного в msdn и 2-мя другими участниками форума:
C++
1
2
3
4
5
6
7
unsigned int length(char *str)
{
    int i = 0;
    while(str[i] != 0) i++;
 
    return i;
}
У меня появились вопросы по: должно ли быть unsigned int i и
C++
1
return static_cast<unsigned int>(i);
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
23.08.2013, 17:47     Как написать максимально оптимизированную функцию поиска длинны строки? #16
Цитата Сообщение от Bend3r Посмотреть сообщение
Как вариант
C++
1
2
3
4
5
int i = 0;
while(s[i] != "\0")
{
++i;
}
Тогда уж
C++
1
2
3
4
5
int i = 0;
while(s[i] != '\0')
{
++i;
}
MickeyBlueEyes
Студент
 Аватар для MickeyBlueEyes
120 / 131 / 12
Регистрация: 07.04.2011
Сообщений: 503
23.08.2013, 17:51     Как написать максимально оптимизированную функцию поиска длинны строки? #17
Цитата Сообщение от Bend3r Посмотреть сообщение
Как вариант
C++
1
2
3
4
5
int i = 0;
while(s[i] != "\0")
{
++i;
}
Это стандартный алгоритм strlen'a. Можна попробывать использовать алгоритм двоичного поиска в отсортированом массива только както напримере строки, ну мож не правильно сформулировар, сейчас попробую накидать код.
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:53  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #18
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Это стандартный алгоритм strlen'a. Можна попробывать использовать алгоритм двоичного поиска в отсортированом массива только както напримере строки, ну мож не правильно сформулировар, сейчас попробую накидать код.
Смысл в том чтобы получить максимально быстрый и код. Интересно, все закончится вставками из ассемблера ))) ?
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 687
23.08.2013, 17:54     Как написать максимально оптимизированную функцию поиска длинны строки? #19
Цитата Сообщение от MickeyBlueEyes Посмотреть сообщение
Это стандартный алгоритм strlen'a. Можна попробывать использовать алгоритм двоичного поиска в отсортированом массива только както напримере строки, ну мож не правильно сформулировар, сейчас попробую накидать код.
Я знаю, но вопрос тс был задан таков: Максимально быстрый поиск, длинны строки. А вы будите пытаться создать поиск чего либо в этой строке.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2013, 17:54     Как написать максимально оптимизированную функцию поиска длинны строки?
Еще ссылки по теме:

C++ Написать функцию поиска структур (записей) с заданными признаками
Нужно отредактировать код поиска в некоторых папках. Добавить функцию поиска в архивах C++
C++ Написать функцию поиска и вывода на экран ВСЕХ делителей чисел из переданного диапазона

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
23.08.2013, 17:54  [ТС]     Как написать максимально оптимизированную функцию поиска длинны строки? #20
Цитата Сообщение от Hugra Посмотреть сообщение
Тогда уж
C++
1
2
3
4
5
int i = 0;
while(s[i] != '\0')
{
++i;
}
Мне кажется в этом сообщение, вообще нет отличий...
Yandex
Объявления
23.08.2013, 17:54     Как написать максимально оптимизированную функцию поиска длинны строки?
Ответ Создать тему
Опции темы

Текущее время: 19:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru