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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Rstuff
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 18
#1

Возвращение массива из функции-шаблона - C++

02.03.2014, 02:04. Просмотров 642. Ответов 5
Метки нет (Все метки)

Есть массив
C++
1
    int    iArray[iSize] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
есть шаблон функция
C++
1
2
3
4
5
6
7
template< typename T >
T * MySwap(const T * array, int a, int b) {
    T arr_a= array[a];
    array[a]=array[b];
    array[b]=arr_a;
    return array;
}
Как мне правильно вернуть из этой функции измененный массив и присвоить тому же массиву в Main ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2014, 02:04
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возвращение массива из функции-шаблона (C++):

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

Возвращение массива из функции - C++
Почему такой код выводит массив корректно. int* Input() { int b = { 10,20,30 }; return b; } int main() {

Возвращение массива из функции - C++
Как вернуть массив из функции? double* Zapolnenie(string Name) { if (Name == &quot;A&quot;) { const int number1 = 10; double A; ...

Возвращение массива из функции - C++
Нужно вернуть массив типа int из функции Как я понимаю сделать это можно только с помощью указателей У меня это получилось но так...

Возвращение многомерного массива из функции - C++
Как вернуть многомерный массив из функции для обычного массива c использованием указателей это выглядит так void function(int*); //...

Возвращение из функции массива указателей - C++
Здравствуйте. Мне нужно вернуть из функции массив указателей. Внутри функции создаю динамический массив указателей, в который помещаю...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Voivoid
674 / 277 / 12
Регистрация: 31.03.2013
Сообщений: 1,339
02.03.2014, 02:21 #2
Возвращай std::vector
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
02.03.2014, 02:57 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
 
template<class T>
void print_arr( T *arr, int sz){
for( int i = 0; i < sz; i++ ) cout << arr[i] << " " ;
cout << endl;
}
 
template<class T>
void swap_arr( T *arr, int a, int b){
//ничего не возвращайте, ведь передали указатель)
T tmp_T = arr[a];
arr[a] = arr[b];
arr[b] = tmp_T;
}
 
int main(){
float arr[] = {-12345.8f, 0.12f, 2.0f, 3.3f, 0.23f, 123.0f, 0.999f, 2.1f, -0.001f }; 
int sz = sizeof(arr)/sizeof(int);
 
print_arr( arr, sz);
cout << endl;
 
swap_arr( arr, 0, sz-1);//первый с последним
 
print_arr( arr, sz);
cout << endl;
cin.get();
    return 0;
}
DrOffset
7090 / 4231 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
02.03.2014, 04:12 #4
Цитата Сообщение от Rstuff Посмотреть сообщение
Как мне правильно вернуть из этой функции измененный массив
Массивы в С++ - это не объекты первого класса, возвращать так просто их нельзя. Но можно, например, воспользоваться std::array из с++11 для достижения требуемого эффекта.
Либо обернуть массив в структуру самому.
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6447 / 3094 / 306
Регистрация: 04.12.2011
Сообщений: 8,567
Записей в блоге: 4
02.03.2014, 04:25 #5
DrOffset, но можно передать указатель и не возвращать? Правда такой указатель как в примере ТС не подойдёт. Не компилируется:
Цитата Сообщение от Rstuff Посмотреть сообщение
есть шаблон функция
и это правильно.
DrOffset
7090 / 4231 / 950
Регистрация: 30.01.2014
Сообщений: 7,006
02.03.2014, 04:38 #6
Цитата Сообщение от IGPIGP Посмотреть сообщение
но можно передать указатель и не возвращать?
Можно, вполне вариант, к тому же с минимумом накладных расходов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2014, 04:38
Привет! Вот еще темы с ответами:

Возвращение из функции значения массива - C++
Есть функция , она выполнила свою работу , теперь результат в виде массива нужно отправить в основную программу , незнаю как это сделать...

Возвращение двумерного массива из функции - C++
Здравствуйте, написал пробник, чтобы освоить метод возвращения из функции двумерного массива (указателя). Что-то не заладилось с двумерным....

Возвращение двумерного массива из функции - C++
int function (int x, const int r, const int c) //работает только если указана размерность массива x { int max, i, maxelrownum = 0; ...

Возвращение массива из функции при наследовании - C++
Здравствуйте! У меня есть класс(Circle), который наследуется от нескольких базовых. Мне нужно выполнить определенные вычисления, но...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
02.03.2014, 04:38
Ответ Создать тему
Опции темы

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