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

Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон - C++

Восстановить пароль Регистрация
 
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 210
Записей в блоге: 1
12.08.2014, 16:15     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #1
Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон, чтобы можно было добавлять элементы в массивы любых типов.

Вот сама функция.

C++
1
2
3
4
5
6
7
8
 int* add_element_array(int * a, int& n)
 {int b=input_number("new element");
 if (!n){a=new int[++n];*a=b;return a;}
  int *c=new int[++n];
  for(int i=0;i<n-1;*(c+i)=*(a+i),i++);
  c[n-1]=b;delete[]a;
  return c;
 }

C++
1
2
3
4
 int input_number(char* ms)
{cout<<"input "<<ms <<" = "; char st[10];
 cin.getline(st,10); return atoi(st);
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2014, 16:15     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон
Посмотрите здесь:

Функция, которая возвращает количество неотрицательных элементов массива. (через указатели) C++
Написать функцию, которая переставляет элементы массива типа int так, что все положительные элементы предшествуют отрицательным. C++
C++ Написать функцию, которая транспонирует заданный в качестве параметра массива типа int
C++ Стеки (функция, которая удаляет из стека первый отрицательный элемент, если такой есть)
Как найти в массиве минимальный элемент типа int? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
12.08.2014, 16:57     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<class T>
T input_number(char* ms)
{
     cout<<"input "<<ms <<" = "; 
     T t;cin>>t;
     return t;
}
template<class T>
T* add_element_array(T * a, int& n)
 {
     T b=input_number<T>("new element");
     if (n==0){a=new T[++n];*a=b;return a;}
     T *c=new T[++n];
     for(int i=0;i<n-1;i++)
                  c[i]=a[i];
     c[n-1]=b;
     delete[]a;
     return c;
 }
ssXXss
263 / 185 / 10
Регистрация: 15.01.2011
Сообщений: 668
12.08.2014, 17:00     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #3
примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//*.h
template < typename T , typename A>
void add_element_array( T * pt, A& array)
{
    //контейнер должен иметь функцию push_back()
    if( pt )
        array.push_back(pt);
}
 
//**.cpp
#include...
 
int main(int argc, char *argv[])
{
    std::vector<int *> vcpi; 
    int * pi = new int;
    *pi = 100500;
    add_element_array<int , std::vector<int *>>(pi,vcpi);
        //или  add_element_array(pi,vcpi);
        return 0;
}
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 210
Записей в блоге: 1
12.08.2014, 18:26  [ТС]     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #4
zss, я тоже до этого пришёл.

Добавлено через 37 минут
zss, можно ещё один вопрос?

Есть некоторая функция, которая создает динамический массив. Её аргументами есть ссылка на указатель и размер массива.
C++
1
void input_array(int *&a, int& n);
Можно ли как-то сделать, чтобы она могла возвращать указатели на массивы разных типов (int, double)?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.08.2014, 18:43     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #5
EfimKR,
C++
1
2
template<typename T>
void input_array(T *&a, int& n)
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 210
Записей в блоге: 1
12.08.2014, 21:07  [ТС]     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #6
ForEveR, таким образом можно реализовать чтобы функция сама создавала динамический массив разных типов (int, double)?
Если да, то как?
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
13.08.2014, 08:52     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #7
На этот вопрос уже был ответ
Цитата Сообщение от zss Посмотреть сообщение
T *c=new T[++n]; // создание массива типа T
...
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 210
Записей в блоге: 1
13.08.2014, 15:28  [ТС]     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #8
zss, проблема в том, что какой тип создаваемого массива мы не знаем. Он создается в функции и заполняется целыми или веществ. числами, а потом возвращается указатель на него. Также возможно, что элементы массива будут заполнены повторно. То-есть сначала он был заполнен целыми, а потом веществ., потом опять целыми и т.д. Реально вообще такое сделать?

Была идея сделать все массивы веществ., когда же попадался бы массив в котором должны быть целые, просто вывести только его целую часть. Но показалось решение кустарным.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.08.2014, 16:00     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #9
Цитата Сообщение от EfimKR Посмотреть сообщение
проблема в том, что какой тип создаваемого массива мы не знаем. Он создается в функции и заполняется целыми или веществ. числами, а потом возвращается указатель на него.
Это-то да. Но функция откуда-то ведь вызывается. Вот там мы уже ДОЛЖНЫ знать тип.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.08.2014, 16:00     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #10
Цитата Сообщение от EfimKR Посмотреть сообщение
проблема в том, что какой тип создаваемого массива мы не знаем. Он создается в функции и заполняется целыми или веществ. числами, а потом возвращается указатель на него.
Это-то да. Но функция откуда-то ведь вызывается. Вот там мы уже ДОЛЖНЫ знать тип.
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 210
Записей в блоге: 1
13.08.2014, 17:58  [ТС]     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #11
ForEveR, то-есть присвоить тип в функции нельзя?
Например объявив указатель на воид и присвоить ему возвращенный результат?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
14.08.2014, 09:55     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #12
EfimKR, Можно. А как вы будете узнавать какой именно тип был введен? И главный вопрос, зачем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.08.2014, 16:50     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон
Еще ссылки по теме:

Функция, которая находит элемент массива C++
C++ задача. Функция типа int C++
Функция, которая увеличивает каждый элемент одномерного массива в два раза C++

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

Или воспользуйтесь поиском по форуму:
EfimKR
 Аватар для EfimKR
48 / 21 / 10
Регистрация: 24.06.2014
Сообщений: 210
Записей в блоге: 1
14.08.2014, 16:50  [ТС]     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон #13
ForEveR, есть задача: программа предлагает на выбор закон заполнения массива. Некоторые законы заполняют целыми, некоторые веществ. числами. Вот и хотел это реализовать в функции. Притом чтобы была возможность повторного заполнения массива.
Yandex
Объявления
14.08.2014, 16:50     Есть функция которая добавляет элемент типа int в конец массива. Как ее переделать через шаблон
Ответ Создать тему
Опции темы

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