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

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

Восстановить пароль Регистрация
 
Rstuff
0 / 0 / 0
Регистрация: 25.03.2012
Сообщений: 18
02.03.2014, 02:04     Возвращение массива из функции-шаблона #1
Есть массив
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 ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Voivoid
 Аватар для Voivoid
580 / 256 / 12
Регистрация: 31.03.2013
Сообщений: 1,284
02.03.2014, 02:21     Возвращение массива из функции-шаблона #2
Возвращай std::vector
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 283
Регистрация: 04.12.2011
Сообщений: 7,710
Записей в блоге: 3
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
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
02.03.2014, 04:12     Возвращение массива из функции-шаблона #4
Цитата Сообщение от Rstuff Посмотреть сообщение
Как мне правильно вернуть из этой функции измененный массив
Массивы в С++ - это не объекты первого класса, возвращать так просто их нельзя. Но можно, например, воспользоваться std::array из с++11 для достижения требуемого эффекта.
Либо обернуть массив в структуру самому.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 283
Регистрация: 04.12.2011
Сообщений: 7,710
Записей в блоге: 3
02.03.2014, 04:25     Возвращение массива из функции-шаблона #5
DrOffset, но можно передать указатель и не возвращать? Правда такой указатель как в примере ТС не подойдёт. Не компилируется:
Цитата Сообщение от Rstuff Посмотреть сообщение
есть шаблон функция
и это правильно.
DrOffset
6450 / 3824 / 885
Регистрация: 30.01.2014
Сообщений: 6,618
02.03.2014, 04:38     Возвращение массива из функции-шаблона #6
Цитата Сообщение от IGPIGP Посмотреть сообщение
но можно передать указатель и не возвращать?
Можно, вполне вариант, к тому же с минимумом накладных расходов.
Yandex
Объявления
02.03.2014, 04:38     Возвращение массива из функции-шаблона
Ответ Создать тему
Опции темы

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