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

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

Восстановить пароль Регистрация
 
 
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
26.08.2013, 23:38     Как сделать из двух функций одну) #1
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;
}
Уважаемые форумчане как сделать?
помогите уважаемые форумчане)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ko
 Аватар для 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
 Аватар для 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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
27.08.2013, 02:01     Как сделать из двух функций одну) #24
Цитата Сообщение от Ko Посмотреть сообщение
а я знаю что там всё супер, и я это дело использую, но где нужна скорость я использую "голую" кучу))))))
Ок, ну можно было бы хотя бы указатель + размер в структуре хранить...
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!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 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     Как сделать из двух функций одну)
Еще ссылки по теме:

C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks C++
C++ Как сделать чтобы при компиляции cin>>a>>b>>c; вводить можно было в одну строку?
Как сделать из двух чисел третье, уникальное для любой комбинации первых двух? C++

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

Или воспользуйтесь поиском по форуму:
Ko
 Аватар для 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     Как сделать из двух функций одну)
Ответ Создать тему
Опции темы

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