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

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

26.08.2013, 23:38. Просмотров 1154. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как сделать из двух функций одну) (C++):

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

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

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

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

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

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

26
Hugra
48 / 48 / 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!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 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!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 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!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 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!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 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!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 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
Привет! Вот еще темы с решениями:

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

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

Как сделать стабильный таймер в Windows XP,7,8 с задержкой в одну микросекунду?
Собственно вопрос в топике, главное, чтоб таймер был стабилен и не скакал и...

Как сделать с использованием функций?
#include &lt;iostream&gt; using namespace std; #include &lt;cmath&gt; int main() ...


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

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

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