Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
1

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

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

Сделать из двух строк одну, включающую их, как подпоследовательности
Привет, задача заключается в том, что даётся две строки. Из них нужно сделать...

из 4 функций сделать одну
Помогите пожалуйста из 4 функций сортировки сделать одну, но чтобы работала на...

Как одну функцию использовать в двух проектах
Есть функция которую нужно вызывать в двух проектах Я поместил ее в...

Как использовать одну переменную в двух модулях?
У меня есть несколько форм. Каждая из них связана через alt+f11 с другими...

Как вывести одну строку состоящую из двух строк ?
как вывести на экран одну строку состоявшиеся из двух строк ? в с++

26
Hugra
49 / 49 / 9
Регистрация: 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;
}
Уважаемые форумчане как сделать?
помогите уважаемые форумчане)
просто одно название дай, будет перегруженной функция
1
Nekto
342 / 287 / 37
Регистрация: 23.03.2012
Сообщений: 838
26.08.2013, 23:44 3
хреновые функции. memcpy за границы будет вылезать.
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
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;
}
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 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 минуты
в логику не вникал если что
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
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 секунд
всем спасибо ребята))) что хотел добился)
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
27.08.2013, 00:11 7
Ko, определние шаблона должно быть в заголовочном файле.

Добавлено через 47 секунд
Цитата Сообщение от Ko Посмотреть сообщение
во внутрь)) класса вставил, всё скомпелировалось и заработало)
ок )
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
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 *);
так вот не пахало, может где я ошибся???
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 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_ ) {
   // ...
}
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
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!!!
0
Nekto
342 / 287 / 37
Регистрация: 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!!!
А если нью сайз меньше олд сайза, то опять за границы полезет.
1
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
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_ фиг знает чё удалялось)))
и не большой недочёт в виде размера, сделал через условие чтоб внешнюю переменную не портить)
0
iRomul
159 / 100 / 14
Регистрация: 17.10.2012
Сообщений: 483
Завершенные тесты: 1
27.08.2013, 01:30 13
Цитата Сообщение от Ko Посмотреть сообщение
Conteiner
container
0
gray_fox
27.08.2013, 01:32
  #14

Не по теме:

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

0
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
27.08.2013, 01:35  [ТС] 15
Вы чё ребята)))
0
iRomul
159 / 100 / 14
Регистрация: 17.10.2012
Сообщений: 483
Завершенные тесты: 1
27.08.2013, 01:36 16
Цитата Сообщение от gray_fox Посмотреть сообщение

Не по теме:


_Да_Ладно_ ? :D

Не по теме:

_А_то_

0
Ko
5 / 5 / 2
Регистрация: 23.12.2011
Сообщений: 265
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 минуты
Научили английцкому) всем спасибо за выстрадание моей функции!!!
0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
27.08.2013, 01:43 18
Цитата Сообщение от Ko Посмотреть сообщение
так идеально?))
Идеально было бы std::vector использовать, хотя я конечно не знаю, что тебе нужно...

Не по теме:

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

0
iRomul
27.08.2013, 01:44
  #19

Не по теме:

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

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

0
gray_fox
What a waste!
1553 / 1258 / 166
Регистрация: 21.04.2012
Сообщений: 2,636
Завершенные тесты: 3
27.08.2013, 01:46 20
+ идентификаторы, начинающиеся с _U (вроде _Container_) зарезервированы для реализации стандартной библиотеки (т.е. теоретически могут быть проблемы); да и читаются не особо)
1
27.08.2013, 01:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2013, 01:46

Как сделать из двух чисел третье, уникальное для любой комбинации первых двух?
Hi :) Есть два числа, допустим: int a и int b, как можно их &quot;сопряч&quot;, то есть...

Как сделать ввод в одну строку?
как сделать ввод в одну строку, через нажатие ентера и отступа на N расстояние,...

Как сделать одну глобальную переменную
Есть многофайловый проект. К примеру 5 файлов(5 &quot;H&quot; файлов+для них 5 &quot;срр&quot;...


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

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

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