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

Магия со статическими массивами - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Задача с использованием структуры и указателя http://www.cyberforum.ru/cpp-beginners/thread1065974.html
Структура содержит поля: имя, фамилия , возраст. Надо заполнить с клавиатуры и передать через указатель в функцию , в к-ой вывести на экран Со структурой мне все понятно, но как к ней сделать указатель, так как типы полей разные и и в какую функцию передавать, если ввод и вывод сразу можно сделать в main ? Помогите пожалуйста разобраться) Struct my { char m;// фамилия char m;//имя int...
C++ Непонятен алгоритм: как записывать значения в бинарном файле в обратном порядке? Нужно написать программу, которая будет, записывать значения в бинарном файле, в обратном порядке. Кажется легко, НО!!! Нельзя использовать массивы, нужно как-то через fseek И никакой копии файла: с этого файла читаем, в него сразу и пишем... Вот так =) http://www.cyberforum.ru/cpp-beginners/thread1065967.html
Определить номер столбца массива, в котором расположен минимальный элемент четвертой строки массива C++
Доброго времени суток, помогите пожалуйста решить задачи по C++ 3)Дан двумерный массив. Определить: a) номер столбца, в котором расположен минимальный элемент четвертой строки массива.Если элементов с минимальным значением в этой строке несколько, то должен быть найден номер столбца самого левого из них. б) номер строки в котором расположен максимальный элемент третьего столбца массива.Если...
Найти число пар соседних элементов массива, являющихся четными числами C++
Доброго времени суток, помогите пожалуйста решить задачи по C++ 2)Найти число пар соседних элементов массива, являющихся четными числами. P.S: очень рассчитываю на вашу помощь
C++ Сформировать стек из N студентов http://www.cyberforum.ru/cpp-beginners/thread1065949.html
Класс "Успеваемость": ФИО, оценки по 4 предметам. Сформировать стек из N (вводится с клавиатуры) студентов. Распечатать список всех студентов, которые имеют средний балл >=4. Сформировать множество из тех студентов, которые не вошли в список. Для решения использовать стандартные функции библиотеки STL. Решил, что через if буду сразу заносить фамилии с средней оценкой >=4 в стек, а остальных сразу...
C++ Найти матрицу С Помогите выполнить данное задание. Нигде не могу найти теорию и даже не представляю как его решать. подробнее

Показать сообщение отдельно
outoftime
║XLR8║
 Аватар для outoftime
505 / 427 / 33
Регистрация: 25.07.2009
Сообщений: 2,297
08.01.2014, 19:41     Магия со статическими массивами
Предисловие:

на форуме подняли топик Написать программу для объединения массивов , в голове сразу мелькнула мысль написать шаблонную функцию, которой не надо было-бы передавать размерность массива (на сколько я знаю это можно сделать если массив статический, а не выделяется динамически).

Ближе к делу:

по быстрому набросал следующий код (рабочий):
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
#include <iostream>
#include <algorithm>
#include <iterator>
 
template<typename T, std::size_t N>
T* join(T **&arrays, const int (&sizes)[N])
{
    int capasity = std::accumulate(sizes, sizes + N, 0);
    T *res = new T[capasity];
 
    for (int i = 0, pos = 0; i < N;)
    {
        std::copy(arrays[i], arrays[i] + sizes[i], res + pos);
        pos += sizes[i++];
    }
 
    return res;
}
 
int main()
{
    int **arrays = new int*[3]
    {
        new int[2]{1,2},
        new int[1]{3},
        new int[3]{4,5,6}
    },
    sizes[] = {2,1,3},
    *res = join(arrays, sizes);
    std::copy(res, res + 6, std::ostream_iterator<int>(std::cout, " "));
}
Собственно вопросы:

1. Почему что-бы компилятор определял размерность массива надо писать int (&sizes)[N] а не просто int sizes[N]

2. Как задать таким же способом размерность массива arrays, т.е. что-бы он был массивом из N массивов, типа
C++
1
int arrays[N][?]
где ? - варьируется от массива к массиву, т.е. скорей всего - просто указатель, т.к. их размер строго задан в sizes и никаких проверок не требуется. Я этот изврат захотел сделать что-бы компилятор не пропускал массивы arrays & sizes у которых различная размерность первого измерения.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru