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

Приведение любого двумерного массива к типу указатель на указатель - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Конфликт имен в библиотеках http://www.cyberforum.ru/cpp-beginners/thread1227155.html
Здравствуйте. Возникла проблема при одновременном подключении #include <X11/extensions/xf86vmode.h> и #include "FreeImage.h" Код ошибки: In file included from GUIImageManager.h:13:0, ...
C++ Найти среднее арифметическое двух диагоналей массива Сложная задачка разобраться не могу! ну нада чтобы была формула вычисления а не тупо добавить диагонали и пощитать размер массива может быть любой! Помогите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1227126.html
Как подключить GDI+ в Code::Blocks? C++
Здравствуйте. Пытаюсь работать с графикой в Code::Blocks, но, найти GDI+ не удалось: т.е. ни библиотек, ни заголовочных файлов там нет.Откуда их можно скачать/установить? в интернете есть 2-3...
C++ Управляемый препроцессинг
Наверняка промахнусь разделом, так что переместите пожалуйста если есть более подходящий.Суть вопроса такова: есть условный исходник, который участвует в сборке под несколько осей и несколько типов...
C++ Программа должна удалять из строки все символы, что стоят на чётных местах после буквы "а" http://www.cyberforum.ru/cpp-beginners/thread1227018.html
Программа должна удалять из строки все символы, что стоят на чётных местах после буквы "а". Сделал программу которая это делает, но только с латиницей. Как сюда подключить кириллицу?...
C++ Рекурсивное вычисление корня k-й степени Описать рекурсивную функцию RootK(X, K, N) вещественного типа, находящую приближенное значение корня K-й степени из числа X по формуле: Y_0 = 1, Y_{N+1} = Y_N -\frac{Y_N - \frac{X}... подробнее

Показать сообщение отдельно
NEbO
588 / 455 / 49
Регистрация: 22.01.2009
Сообщений: 1,180
Записей в блоге: 1
Завершенные тесты: 2
14.07.2014, 18:08
прикольная задача)) вот так работает, по идее для любого типа, но массив только двумерный поддерживается
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
#include <iostream>
#include <stdlib.h>
#include <time.h>
 
template <class T>
T **my_super_puper_cast(void *arr, T, size_t row_size, size_t row_count) {
    T **result = new T*[row_count];
    for (int i = 0; i < row_count; i++) {
        result[i] = (T*)(row_size*i + (size_t)arr);
    }
    return result;
}
 
#define MY_SUPER_CAST(x) (my_super_puper_cast( reinterpret_cast<void*>(x), x[0][0], sizeof(x[0]), sizeof(x) / sizeof(x[0]) ))
 
int main() {
    int arr1[5][6];
 
    srand(time(0));
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 6; j++) {
            arr1[i][j] = rand();
        }
    }
 
    int **arr_ptr = MY_SUPER_CAST(arr1);
 
    std::cout << arr_ptr[2][3] << " " << arr1[2][3] << std::endl;
    return 0;
}
причем второй аргумент в функции нужен только для того, чтоб компилятор правильно вывел типы
тестил в gcc 4.9.0 и clang 3.4.2, lin

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