Форум программистов, компьютерный форум 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;
}
Уважаемые форумчане как сделать?
помогите уважаемые форумчане)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.08.2013, 23:38     Как сделать из двух функций одну)
Посмотрите здесь:

C++ Как сделать ввод в одну строку?
Как одну функцию использовать в двух проектах C++
C++ Как сделать с использованием функций?
Как сделать стабильный таймер в Windows XP,7,8 с задержкой в одну микросекунду? C++
C++ из 4 функций сделать одну
C++ (ооп) как из трех файлов (2 cpp и h) сделать одну программу? code blocks C++
C++ Как сделать чтобы при компиляции cin>>a>>b>>c; вводить можно было в одну строку?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hugra
 Аватар для Hugra
47 / 47 / 1
Регистрация: 18.07.2013
Сообщений: 138
Записей в блоге: 1
26.08.2013, 23:43     Как сделать из двух функций одну) #2
Цитата Сообщение от Ko Посмотреть сообщение
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;
}
Уважаемые форумчане как сделать?
помогите уважаемые форумчане)
просто одно название дай, будет перегруженной функция
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
26.08.2013, 23:44     Как сделать из двух функций одну) #3
хреновые функции. memcpy за границы будет вылезать.
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
26.08.2013, 23:49  [ТС]     Как сделать из двух функций одну) #4
Цитата Сообщение от Nekto Посмотреть сообщение
хреновые функции. memcpy за границы будет вылезать.
я согласен, старое название и новое будет 3 переменных на вход

Добавлено через 23 секунды
а как сделать так чтоб меньше было текста???

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void Resize_Array_unsigned_int( unsigned int & _Old_Size_, unsigned int &_New_Size_, unsigned int *_Conteiner_ )
{
    unsigned int *tmp = new unsigned int[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( unsigned int ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
 
void Resize_Array_bool( unsigned int & _Old_Size_, unsigned int &_New_Size_, bool *_Conteiner_)
{
    bool *tmp = new bool[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( bool ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
gray_fox
What a waste!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
26.08.2013, 23:54     Как сделать из двух функций одну) #5
Ko, шаблон ф-ии
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *& _Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( T ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
как то так

Добавлено через 2 минуты
в логику не вникал если что
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 00:08  [ТС]     Как сделать из двух функций одну) #6
я попытался воспользоваться функцией выдала мне
>Global_variables.obj : error LNK2001: неразрешенный внешний символ ""void __cdecl Resize_Array<unsigned int>(unsigned int &,unsigned int &,unsigned int * &)" (??$Resize_Array@I@@YAXAEAI0AEAPEAI@Z)"
1
вот так запросил функцию
Resize_Array( Global_Conteiner_Size_Virtual_Time, Global_Conteiner_Size_Array_Virtual_Time, Global_Conteiner_Virtual_Time );

Добавлено через 7 минут
во внутрь)) класса вставил, всё скомпелировалось и заработало)

Добавлено через 17 секунд
всем спасибо ребята))) что хотел добился)
gray_fox
What a waste!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
27.08.2013, 00:11     Как сделать из двух функций одну) #7
Ko, определние шаблона должно быть в заголовочном файле.

Добавлено через 47 секунд
Цитата Сообщение от Ko Посмотреть сообщение
во внутрь)) класса вставил, всё скомпелировалось и заработало)
ок )
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 00:19  [ТС]     Как сделать из двух функций одну) #8
cpp
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ )
{
    unsigned int *tmp = new unsigned int[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( _Conteiner_ ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
и в h
C++
1
2
3
template<typename T>
 
void Resize_Array( unsigned int &, unsigned int &, T *);
так вот не пахало, может где я ошибся???
gray_fox
What a waste!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
27.08.2013, 00:20     Как сделать из двух функций одну) #9
Ko,
Цитата Сообщение от gray_fox Посмотреть сообщение
определние шаблона должно быть в заголовочном файле.
т.е. всё в .h
C++
1
2
3
4
template<typename T> 
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ ) {
   // ...
}
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 00:44  [ТС]     Как сделать из двух функций одну) #10
надо докапаться и разобраться)

Добавлено через 14 секунд
аааааааааааа

Добавлено через 8 секунд
ааааа

Добавлено через 8 секунд
))))))

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

Добавлено через 12 минут
проверил берёт ссылку((((

Добавлено через 50 секунд
может 4 переменную завести в функции??? типа какой размер? или узнать внутри функции как то?

Добавлено через 3 минуты
сплю видимо) надо Т поставлять!!!

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( T ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
во так всё правильно, всё пашет и правильно размер подставляется, всём спасибо особенно gray_fox!!!
Nekto
342 / 287 / 10
Регистрация: 23.03.2012
Сообщений: 838
27.08.2013, 00:51     Как сделать из двух функций одну) #11
Цитата Сообщение от Ko Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
template<typename T>
void Resize_Array( unsigned int & _Old_Size_, unsigned int &_New_Size_, T *_Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( T ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
во так всё правильно, всё пашет и правильно размер подставляется, всём спасибо особенно gray_fox!!!
А если нью сайз меньше олд сайза, то опять за границы полезет.
Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 01:29  [ТС]     Как сделать из двух функций одну) #12
Цитата Сообщение от Nekto Посмотреть сообщение
А если нью сайз меньше олд сайза, то опять за границы полезет.
Такое не может быть))) у меня) постоянно идёт увеличение массива, может быть или более или равно

Добавлено через 1 минуту
но сделаю условие если что приравнивание) чтоб больше чем надо не скачало а то в друг))

Добавлено через 18 секунд
всякое бывает))))))

Добавлено через 7 минут
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 *&_Conteiner_ )
{
    T *tmp = new T[_New_Size_];
    if ( _New_Size_ < _Old_Size_) 
         memcpy( tmp, _Conteiner_, _New_Size_ * sizeof( T ));
    else memcpy( tmp, _Conteiner_, _Old_Size_ * sizeof( T ));
    delete[]_Conteiner_;
    _Conteiner_ = tmp;
}
во теперь красота вот так выглядит эта))
кстати была 1 грубейшая ошибка в виде T *_Conteiner_ а надо T *&_Conteiner_ фиг знает чё удалялось)))
и не большой недочёт в виде размера, сделал через условие чтоб внешнюю переменную не портить)
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
27.08.2013, 01:30     Как сделать из двух функций одну) #13
Цитата Сообщение от Ko Посмотреть сообщение
Conteiner
container
gray_fox
27.08.2013, 01:32
  #14

Не по теме:

Цитата Сообщение от iRomul Посмотреть сообщение
container
_Да_Ладно_ ?

Ko
 Аватар для Ko
-65 / 5 / 0
Регистрация: 23.12.2011
Сообщений: 246
27.08.2013, 01:35  [ТС]     Как сделать из двух функций одну) #15
Вы чё ребята)))
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
27.08.2013, 01:36     Как сделать из двух функций одну) #16
Цитата Сообщение от gray_fox Посмотреть сообщение

Не по теме:


_Да_Ладно_ ?

Не по теме:

_А_то_

Ko
 Аватар для 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!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
27.08.2013, 01:43     Как сделать из двух функций одну) #18
Цитата Сообщение от Ko Посмотреть сообщение
так идеально?))
Идеально было бы std::vector использовать, хотя я конечно не знаю, что тебе нужно...

Не по теме:

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

iRomul
27.08.2013, 01:44
  #19

Не по теме:

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

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 01:46     Как сделать из двух функций одну)
Еще ссылки по теме:

Программа не выполняет одну из функций C++
Как сделать из двух чисел третье, уникальное для любой комбинации первых двух? C++
Как сделать одну глобальную переменную C++
Сделать из двух строк одну, включающую их, как подпоследовательности C++
C++ Как вывести одну строку состоящую из двух строк ?

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

Или воспользуйтесь поиском по форуму:
gray_fox
What a waste!
 Аватар для gray_fox
1246 / 1129 / 54
Регистрация: 21.04.2012
Сообщений: 2,354
Завершенные тесты: 3
27.08.2013, 01:46     Как сделать из двух функций одну) #20
+ идентификаторы, начинающиеся с _U (вроде _Container_) зарезервированы для реализации стандартной библиотеки (т.е. теоретически могут быть проблемы); да и читаются не особо)
Yandex
Объявления
27.08.2013, 01:46     Как сделать из двух функций одну)
Ответ Создать тему
Опции темы

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