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

Можно ли передать в функцию массив произвольного размера ? - C++

Восстановить пароль Регистрация
 
nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
05.02.2012, 16:37     Можно ли передать в функцию массив произвольного размера ? #1
Хочу создать функцию для детекта количества элементов в массиве

C++
1
sizeof(array)/sizeof(array[0]);
и надо чтобы функция принимала произвольный размер массива
как сделать такую функцию на с++ ?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2012, 16:37     Можно ли передать в функцию массив произвольного размера ?
Посмотрите здесь:

C++ Как передать в функцию указатель на двумерный массив заранее неизвестного размера?
Можно ли создать функцию, принимающую двумерный массив произвольного размера? C++
C++ Строковый массив произвольного размера
C++ Можно ли в качестве параметра функции передать другую функцию?
динамический массив произвольного размера C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
05.02.2012, 16:49     Можно ли передать в функцию массив произвольного размера ? #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
template<typename T, int N>
int func(const T(&)[N]) {
   return N;
}
 
int main() {
   int ia[4];
   char ca[7];
   
   std::cout << func(ia) << std::endl;
   std::cout << func(ca) << std::endl;
}
http://liveworkspace.org/code/e8235b...01d33cb0fd7bfe
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
05.02.2012, 16:51     Можно ли передать в функцию массив произвольного размера ? #3
nill, только вот таким хитрым способом и только для статических массивов. Размер динамического массива никак узнать не получится.

C++
1
2
3
4
5
template<typename Type, size_t Size>
size_t static_array_size(const Type (&)[Size])
{
    return Size;
}
http://liveworkspace.org/code/6f346e...a21396a9818779

Добавлено через 1 минуту

Не по теме:

niXman, опять я опоздун

niXman
05.02.2012, 16:52
  #4

Не по теме:

бывает

nill
8 / 8 / 0
Регистрация: 16.08.2009
Сообщений: 417
05.02.2012, 18:57  [ТС]     Можно ли передать в функцию массив произвольного размера ? #5
niXman,
silent_1991,

C++
1
template<typename T, int N>
А что вот это значит что оно делает ?

И что насчет типа данных массива произвольный тип данных функция не примет ?
под каждый тип данных нужно создавать свою функцию ?
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
05.02.2012, 19:24     Можно ли передать в функцию массив произвольного размера ? #6
Цитата Сообщение от nill Посмотреть сообщение
А что вот это значит что оно делает ?
Читайте про шаблоны.

Цитата Сообщение от nill Посмотреть сообщение
И что насчет типа данных массива произвольный тип данных функция не примет ?
под каждый тип данных нужно создавать свою функцию ?
Успокойтесь и переформулируйте вопрос. Я лично ничего не понял.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.02.2012, 19:41     Можно ли передать в функцию массив произвольного размера ?
Еще ссылки по теме:

Можно ли передать в функцию указатель на перегруженный оператор? C++
Можно ли передать указатель на функцию как параметр другой функции? C++
C++ А можно в функцию, или перегруженный оператор передать ссылку на копию?

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
05.02.2012, 19:41     Можно ли передать в функцию массив произвольного размера ? #7
Цитата Сообщение от nill Посмотреть сообщение
под каждый тип данных нужно создавать свою функцию ?
-Нет.
-Почему?
Цитата Сообщение от silent_1991 Посмотреть сообщение
Читайте про шаблоны.
Yandex
Объявления
05.02.2012, 19:41     Можно ли передать в функцию массив произвольного размера ?
Ответ Создать тему
Опции темы

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