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

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

Войти
Регистрация
Восстановить пароль
 
 
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
#1

Как сделать из двух функций одну) - C++

26.08.2013, 23:38. Просмотров 1024. Ответов 26
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Resize_Array_unsigned_int( unsigned int &_New_Size_, unsigned int *_Conteiner_ )
{
    unsigned int *tmp = new unsigned int[_New_Size_];
    memcpy( tmp, _Conteiner_, _New_Size_ * sizeof( unsigned int ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
 
void Resize_Array_bool(unsigned int &_New_Size_, bool *_Conteiner_)
{
    bool *tmp = new bool[_New_Size_];
    memcpy( tmp, _Conteiner_, _New_Size_ * sizeof( bool ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
Уважаемые форумчане как сделать?
помогите уважаемые форумчане)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2013, 23:38     Как сделать из двух функций одну)
Посмотрите здесь:
Сделать из двух строк одну, включающую их, как подпоследовательности C++
C++ из 4 функций сделать одну
Как одну функцию использовать в двух проектах C++
C++ Как вывести одну строку состоящую из двух строк ?
Как сделать из двух чисел третье, уникальное для любой комбинации первых двух? C++
Как сделать одну глобальную переменную C++
C++ Как сделать ввод в одну строку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
27.08.2013, 01:36     Как сделать из двух функций одну) #16
Цитата Сообщение от gray_fox Посмотреть сообщение

Не по теме:


_Да_Ладно_ ?

Не по теме:

_А_то_

Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 01:42  [ТС]     Как сделать из двух функций одну) #17
Conteiner = контейнерный
container = контейнер

хотите я так понял чтоб идеальная была функция) ща сделаю)

Добавлено через 55 секунд
C++
1
2
3
4
5
6
7
8
9
10
template<typename T>
void Resize_Array( unsigned int &_Old_Size_, unsigned int &_New_Size_, T *&_Contаiner_ )
{
    T *tmp = new T[_New_Size_];
    if ( _New_Size_ < _Old_Size_) 
         memcpy( tmp, _Contаiner_, _New_Size_ * sizeof( T ));
    else memcpy( tmp, _Contаiner_, _Old_Size_ * sizeof( T ));
    delete[]_Contаiner_;
    _Contаiner_ = tmp;
}
так идеально?))

Добавлено через 3 минуты
Научили английцкому) всем спасибо за выстрадание моей функции!!!
gray_fox
What a waste!
1445 / 1174 / 61
Регистрация: 21.04.2012
Сообщений: 2,462
Завершенные тесты: 3
27.08.2013, 01:43     Как сделать из двух функций одну) #18
Цитата Сообщение от Ko Посмотреть сообщение
так идеально?))
Идеально было бы std::vector использовать, хотя я конечно не знаю, что тебе нужно...

Не по теме:

Цитата Сообщение от Ko Посмотреть сообщение
Conteiner = контейнерный

iRomul
27.08.2013, 01:44
  #19

Не по теме:

Вот что гугл выдал:
Контейнерный класс. Контейнерная площадка. Контейнерный.
Container class. Container yard. Container.

Но это так, эстетика.

gray_fox
What a waste!
1445 / 1174 / 61
Регистрация: 21.04.2012
Сообщений: 2,462
Завершенные тесты: 3
27.08.2013, 01:46     Как сделать из двух функций одну) #20
+ идентификаторы, начинающиеся с _U (вроде _Container_) зарезервированы для реализации стандартной библиотеки (т.е. теоретически могут быть проблемы); да и читаются не особо)
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 01:52  [ТС]     Как сделать из двух функций одну) #21
Вы чё хотите чтоб мне спалось плохо, типа мучался будут ли проблемы или нет?))) если компилиться то нормально) по ходу дела разберёмся будут проблемы или нет)
вектор не использую потому что для меня приоритет это скорость. вектор медленней работает, я его использую только когда составляю списки объектов.

Добавлено через 34 секунды
начал писать _Size_ с обоих сторон типа для входящих переменных.
gray_fox
27.08.2013, 01:55
  #22

Не по теме:

Цитата Сообщение от Ko Посмотреть сообщение
вектор медленней работает
)
вектор - это массив в куче + 3 указателя + уже написанный, отлаженный и задокументированный интерфейс\реализация. У тебя - массив в куче + указатель + размер... и всё)

Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 01:58  [ТС]     Как сделать из двух функций одну) #23
Представляете быстрей компилироваться стало) видимо компилятор читал и долго разбирался с моим _Conteiner_))) теперь когда пишу _Contаiner_ компилируется быстрей на 2 секунды))))) HO_HO_HO))))

Добавлено через 1 минуту
Цитата Сообщение от gray_fox Посмотреть сообщение

Не по теме:


)
вектор - это массив в куче + 3 указателя + уже написанный, отлаженный и задокументированный интерфейс\реализация. У тебя - массив в куче + указатель + размер... и всё)

да я знаю что там всё супер, и я это дело использую, но где нужна скорость я использую "голую" кучу))))))
gray_fox
What a waste!
1445 / 1174 / 61
Регистрация: 21.04.2012
Сообщений: 2,462
Завершенные тесты: 3
27.08.2013, 02:01     Как сделать из двух функций одну) #24
Цитата Сообщение от Ko Посмотреть сообщение
а я знаю что там всё супер, и я это дело использую, но где нужна скорость я использую "голую" кучу))))))
Ок, ну можно было бы хотя бы указатель + размер в структуре хранить...
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 02:08  [ТС]     Как сделать из двух функций одну) #25
Цитата Сообщение от gray_fox Посмотреть сообщение
Ок, ну можно было бы хотя бы указатель + размер в структуре хранить...
у меня специальный класс для этого сделан где там всё к этому делу прикручено, но именно доступ к куче представлен напрямую, потому что делал тест взял в класс кучу сунул и напрямую получилось по скорости доступа где то 53 секунды против 65 секунд. вот выбрал так что куча "лежит" наверху а класс управляет ей, по этому сделал функцию управления размером кучей, у меня их разных 5 куч и разные типы, по этому сделал данную функцию изменения размера, там если и unsigned int и int и bool и short))) в зависимости от данных) была кстати мысль сделать vector<bool> но отказался из-за того что доступ к значениям медленный сделал кучу) пожертвовал памятью
gray_fox
What a waste!
1445 / 1174 / 61
Регистрация: 21.04.2012
Сообщений: 2,462
Завершенные тесты: 3
27.08.2013, 02:31     Как сделать из двух функций одну) #26
Ko, ничего не понял, то, что я писал "про структуру", на скорость выполнения не должно никак повлиять (ну я не мерял ничего конечно, если интересно ). Просто это минимальное упрощение (a la С). Навроде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
typedef unsigned int size_t;
 
template<typename T>
struct Container {
 
   Container(T * const data, size_t const size) data(data), size(size) {}
 
   T *       data;
   size_t    size;
};
 
template<typename T>
Container<T> resize(Container<T> const container, size_t const size) {
   T * const data = new T[size];
   size_t const realSize = ((size < container.size) ? size : container.size);
   std::memcpy(data, container.data, realSize * sizeof (T));
   delete[] container.data;
   return Container<T>(data, size);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 18:23     Как сделать из двух функций одну)
Еще ссылки по теме:
Как сделать стабильный таймер в Windows XP,7,8 с задержкой в одну микросекунду? C++
C++ Как сделать с использованием функций?
C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks C++
Программа не выполняет одну из функций C++
C++ Как сделать чтобы при компиляции cin>>a>>b>>c; вводить можно было в одну строку?

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

Или воспользуйтесь поиском по форуму:
Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 18:23  [ТС]     Как сделать из двух функций одну) #27
Цитата Сообщение от gray_fox Посмотреть сообщение
Ko, ничего не понял, то, что я писал "про структуру", на скорость выполнения не должно никак повлиять (ну я не мерял ничего конечно, если интересно ). Просто это минимальное упрощение (a la С). Навроде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
typedef unsigned int size_t;
 
template<typename T>
struct Container {
 
   Container(T * const data, size_t const size) data(data), size(size) {}
 
   T *       data;
   size_t    size;
};
 
template<typename T>
Container<T> resize(Container<T> const container, size_t const size) {
   T * const data = new T[size];
   size_t const realSize = ((size < container.size) ? size : container.size);
   std::memcpy(data, container.data, realSize * sizeof (T));
   delete[] container.data;
   return Container<T>(data, size);
}
ну я про это и говорю что скорость на 10-15% упадёт при таких упаковках
Yandex
Объявления
27.08.2013, 18:23     Как сделать из двух функций одну)
Ответ Создать тему
Опции темы

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