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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача с использованием структуры и указателя http://www.cyberforum.ru/cpp-beginners/thread1065974.html
Структура содержит поля: имя, фамилия , возраст. Надо заполнить с клавиатуры и передать через указатель в функцию , в к-ой вывести на экран Со структурой мне все понятно, но как к ней сделать...
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. Сформировать множество...
C++ Найти матрицу С Помогите выполнить данное задание. Нигде не могу найти теорию и даже не представляю как его решать. подробнее

Показать сообщение отдельно
outoftime
║XLR8║
510 / 432 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
08.01.2014, 20:57  [ТС]
Tulosba, знаешь как сделать второе? Массив ссылок.

Добавлено через 13 минут
Почему компилятор такое хавает, размерности массивов ведь явно не совпадают.
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <algorithm>
#include <iterator>
 
template<typename T, std::size_t N>
T* join(T *arrays[N], 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[2]{1,2},
        new int[1]{3},
        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, " "));
}


Добавлено через 6 минут
Вопрос решен:
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
#include <iostream>
#include <algorithm>
#include <iterator>
#include <assert.h>
 
template<typename T, std::size_t N>
T* join(T *(&arrays)[N], 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[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, " "));
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru