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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
#1

Функция, которая определяет, входит ли значение в массив - оценка реализации - C++

20.07.2014, 19:56. Просмотров 942. Ответов 24
Метки нет (Все метки)

привет всем, это снова я велосипедописатель на сей раз я решил опять заюзать так понравившееся мне шаблоны для написания на сей раз более простой, но довольно полезной (на мой взгляд) функции которая определяет входит ли значение в массив, прошу вашей оценки, так ли все хорошо как мне кажется?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template <typename T>
bool ValueInArray(T Value, T* Array)
{
    int count = 0;
    bool retval = false;
    while (*Array)
    {
        count++;
        if (Value == *(Array++))
        {
            retval = true;
            break;
        }
        else
        {
            retval = false;
        }
    }
    Array -= count * sizeof(T);
    return retval;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.07.2014, 19:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция, которая определяет, входит ли значение в массив - оценка реализации (C++):

Функция,которая определяет, встречается ли заданная буква, которая передается в функцию как параметр - C++
Написать функцию, которая определяет, встречается ли заданная буква, которая передается в функцию как параметр, во введенной строке....

функция, которая определяет минимальный элемент массива - C++
Напишите функцию, которая определяет минимальный элемент массива (его значение и номер). Внутри функции запрещено использовать команды cin...

Функция, которая для одного целого числа определяет, является ли оно кратно числу К - C++
1) функцию, которая для одного целого числа (не для одномерного массива и не для матрицы) определяет, является ли оно кратно числу К, где К...

Функция, которая определяет количество элементов передаваемого массива, которые больше определенного числа - C++
Напишите функцию, которая определяет количество элементов передаваемого массива, которые больше определенного числа, это число тоже...

Функция для отсортированного массива целых чисел определяет, содержится ли в нем заданное значение - C++
Функция, которая для отсортированного массива целых чисел определяет, содержится ли в нем заданное значение. с++. Пожалуйста простой код.

Написать программу, которая определяет симметричный массив или нет - C++
Написать программу, которая определяет симметричный массив или нет

24
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,051
20.07.2014, 20:41 #16
Цитата Сообщение от GetHelp Посмотреть сообщение
вот и пытаюсь изобретать по своему...
найди какую нибудь книжку
например
А. Фридман, Л. Кландер, М. Михаелес, Х. Шилдт " C/C++ алгоритмы и приемы програмирования"

а то будет как у О. Бендера
Слушайте, что я накропал вчера ночью при колеблющемся свете электрической лампы: «Я помню чудное мгновенье, передо мной явилась ты, как мимолетное виденье, как гений чистой красоты». Правда, хорошо? Талантливо? И только на рассвете, когда дописаны были последние строки, я вспомнил, что этот стих уже написал А. Пушкин. Такой удар со стороны классика! А?
(с) "Золотой теленок" И. Ильф, Е. Петров
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
20.07.2014, 20:45  [ТС] #17
да печалька лажа вышла с передачей размера это уже не комильфо... ладно буду изобретать че нибудь еще
0
0x10
2474 / 1647 / 247
Регистрация: 24.11.2012
Сообщений: 4,068
20.07.2014, 20:48 #18
Цитата Сообщение от GetHelp Посмотреть сообщение
ладно буду изобретать че нибудь еще
Все украдено до нас. Передача итераторов на начало и конец - универсальный способ, повсеместно использующийся в стандартной библиотеке. Позволяет работать как с обычными массивами, так и с контейнерами stl и любыми итераторами, поддерживающих соответствующий интерфейс. Пример я приводил на предыдущей странице.
1
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
20.07.2014, 22:07  [ТС] #19
немного не в тему, но я тут думал по поводу нахождения длины динамического массива и мне стало интересно, а как работает функция realloc? она что выделяет требуемое количество блоков памяти после окончания массива? т.е. вот например был массив на 5 элементов, заюзали realloc с параметром 10 (ну соответственно умножив на sizeof), и она взяла и начиная с конца массива взяла требуемое количество байт и выделила? (кстати так в чем же вообще состоит выделение никак не могу понять?), т.е. в таком случае она должна была как то найти этот самый конец массива, чтобы после него выделить еще сколько то байт... или же она просто выделяет заново 10 элементов, а предыдущий массив об-free-вает? если так то проехали это был проблеск надежды но походу как сказал 0x10 все украдено до нас
0
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,051
20.07.2014, 22:13 #20
Цитата Сообщение от GetHelp Посмотреть сообщение
она что выделяет требуемое количество блоков памяти после окончания массива? т.е. вот например был массив на 5 элементов, заюзали realloc с параметром 10 (ну соответственно умножив на sizeof), и она взяла и начиная с конца массива взяла требуемое количество байт и выделила?
нет она просто выделит в свободном месте нужное количество памяти скопирует туда из старого блока значения и удалит старую память
примерно так

C
1
2
3
4
arr=malloc();
memcpy(arr,arrOld, size);
free(arrOld);
arrOld=arr;
потому она такая и медленная
1
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
20.07.2014, 22:15  [ТС] #21
ValeryS, ясно, значит вопрос снят
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
20.07.2014, 22:27 #22
Цитата Сообщение от ValeryS Посмотреть сообщение
она просто выделит в свободном месте нужное количество памяти скопирует туда из старого блока значения и удалит старую память
Всё таки она по возможности выделит блок по тому же адресу, и тогда копирование не нужно; но расчитывать на это не стоит конечно.
0
GetHelp
-7 / 61 / 6
Регистрация: 27.02.2013
Сообщений: 1,112
20.07.2014, 22:32  [ТС] #23
Цитата Сообщение от gray_fox Посмотреть сообщение
и тогда копирование не нужно
так все таки... давайте точно: realloc копирует значения или нет??? это уже не про длину массивов, просто давно это интересно...
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
20.07.2014, 22:34 #24
Цитата Сообщение от GetHelp Посмотреть сообщение
realloc копирует значения или нет
Если у него получиться выделить блок памяти нужного размера по тому же адресу, то нет; если не получиться, то да, будет копирование.
1
ValeryS
Модератор
6673 / 5082 / 474
Регистрация: 14.02.2011
Сообщений: 17,051
21.07.2014, 05:25 #25
Цитата Сообщение от gray_fox Посмотреть сообщение
Всё таки она по возможности выделит блок по тому же адресу,
По моему, сие не оговорено и зависит от реализации
Цитата Сообщение от gray_fox Посмотреть сообщение
но расчитывать на это не стоит конечно.
И это правильно
давай рассчитывать на самый худший вариант
Цитата Сообщение от GetHelp Посмотреть сообщение
это уже не про длину массивов,
разумеется размер выделенной памяти где то хранится менеджером памяти
Но где? тайна великая сие есть
каждый компилятор волен располагать где хочет, и достать эту информацию, без хакерских штучек, невозможно
0
21.07.2014, 05:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.07.2014, 05:25
Привет! Вот еще темы с ответами:

Программа, которая определяет, какую следует удалить цифру из числа, чтобы получить максимальное значение - C++
Программа, которая определяет номер цифры, какую следует выкреслить, что бы получить максимальное значение. Например: 783 - вычеркиваем 7 -...

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

Функция, которая находит минимальное значение - C++
Вобщем в программе вычесляются значения косинуса на интервале Нужна функция которая найдет найменьшее из этих значений #include...

Функция, которая возвращает требуемое значение - C++
Дан одномерный массив из n чисел. Элементами массива являются случайные целые числа от -10 до 10 включительно. Напишите функцию, которая...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru