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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
#1

Указатель на 2мерный массив в функцию - C++

20.11.2012, 09:29. Просмотров 488. Ответов 9
Метки нет (Все метки)

Добрый день, уважаемые. Столкнулся вот с какой проблемой.
Хотелось бы отправлять в функцию указатель на свой 2х мерный массив чтоб после ее отработки массив содержал данные. На сайтах много примеров исполняющих подобное действо, но я так и не смог добиться положительных результатов((
Пришел к выводу что лучше использовать
C++
1
 vector < int > >
указатель на который можно в функцию послать, но как корректно посылать указатель и заполнять его и считывать в виде этого вектора...не понятно.
В общем просьба помочь разобраться в вопросе.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2012, 09:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на 2мерный массив в функцию (C++):

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив) - C++
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

Написать функцию принимающую массив и возвращающую указатель на динамический массив - C++
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...

2мерный массив - C++
Путём перестановки элементов квадратной вещественной матрицы добиться того, чтобы её максимальный элемент находился в левом верхнем углу,...

2мерный массив - C++
Всем привет! В поиске не нашел ничего кроме пустых тем с 1-2 постами по данному вопросу (хотя во многих сборниках задач видел это...

2мерный массив - C++
Привет всем. Помогите пожалуйста решить нетрудную задачу.Заранее спасибо. (если можно рабочую версию) Дан двумерный массив. Считать...

Правильно ли передан указатель на массив структур в функцию? - C++
/*Учебная программулина*/ #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; struct newtype { char surname; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
20.11.2012, 11:24 #2
Вот накидал 2 функции. В первой (fill_array) вектор передаётся по ссылке, во второй (fill_array_2) по указателю. После чего они там заполняются значениями и заполненными возвращаются в главную функцию.

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
#include <iostream>
#include <vector>
using namespace std;
 
void fill_array(vector<int> &arr);
void fill_array_2(vector<int> *arr);
int main()
{
    vector<int> arr;
    fill_array(arr);
    // или
    fill_array_2(&arr);
 
    for(int i = 0; i < 10; i++)
        cout << arr[i] << " ";
 
    cout << endl;
    return 0;
}
void fill_array(vector<int> &arr)
{
    for(int i = 0; i < 10; i++)
        arr.push_back(i);
}
void fill_array_2(vector<int> *arr)
{
    for(int i = 0; i < 10; i++)
        arr->push_back(i);
}
1
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
20.11.2012, 13:29  [ТС] #3
Это же не двухмерный массив
0
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
20.11.2012, 14:18 #4
Цитата Сообщение от Андрей2011 Посмотреть сообщение
Это же не двухмерный массив
Теперь двухмерный. Когда массив больше не будет нужен, надо пройтись во всем элементам массива и удалить их через оператор delete, чтобы память не утекла.

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
34
35
36
#include <iostream>
#include <vector>
using namespace std;
 
void fill_array(vector<vector<int>*> &arr);
int main()
{
    vector<vector<int>*> arr;
    fill_array(arr);
 
    for(int i = 0; i < 10; i++)
    {
        for(int j = 0; j < 10; j++)
        {
            cout << (*arr[i])[j] << " ";
        }
        cout << endl;
    }
 
    cout << endl;
    return 0;
}
 
void fill_array(vector<vector<int>*> &arr)
{
    int c = 0;
    for(int i = 0; i < 10; i++)
    {
        arr.push_back(new vector<int>());
        for(int j = 0; j < 10; j++)
        {
            arr[i]->push_back(c);
            c++;
        }
    }
}
1
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
20.11.2012, 15:56  [ТС] #5
а ведь работает!!! )) Большое спасибо, уважаемый, extenup, вы мне очень помогли.

Добавлено через 1 минуту
а как корректно удалять не подскажете?
0
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
20.11.2012, 16:03 #6
Можно добавить в конец функции main

C++
1
for(int i = 0; i < arr.size(); i++) delete arr[i];
1
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.11.2012, 16:16 #7
extenup,
C++
1
vector<vector<int>> arr;
двумерный вектор без всяких делейтов в конце
1
extenup
54 / 54 / 3
Регистрация: 12.11.2011
Сообщений: 109
20.11.2012, 16:28 #8
Цитата Сообщение от I.M. Посмотреть сообщение
vector<vector<int>> arr;
двумерный вектор без всяких делейтов в конце
Можете написать рабочий пример двумерного вектора без динамического выделения памяти?
1
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
20.11.2012, 16:32 #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void fill_array(vector<vector<int>> &arr)
{
    int c = 0;
    for(int i = 0; i < 10; i++)
    {
        arr.push_back(vector<int>());
        for(int j = 0; j < 10; j++)
        {
            arr[i].push_back(c);
            c++;
        }
    }
}
2
Андрей2011
29 / 23 / 2
Регистрация: 18.01.2011
Сообщений: 359
20.11.2012, 16:54  [ТС] #10
Хм. боюсь, что уважаемый, I.M., прав. Получилось и без динамического выделения памяти. Впрочем и тот и другой вариант полезны. Спасибо!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2012, 16:54
Привет! Вот еще темы с ответами:

Процедурный тип на функцию содержащую указатель на массив - C++
void WriteEl(stack (*temp), float qwerty, int kol) помогите описать указатель на процедуру :(

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель - C++
Друзья! Всем привет. Вот код: class otets { public: void f (void (otets::*p)()); private: void echo_f (){}; ...

Как правильно передать в функцию указатель на двумерный массив? - C++
Сабж #include &lt;windows.h&gt; #include &lt;stdio.h&gt; using namespace std; //ОТ безысходности сделал матрицу глобальной int A = {2,...

Реализовать 3 функции, каждая из которых принимает указатель на массив и количество элементов и возвращает указатель на новый массив. - C++
Пишу в Microsoft Visual Studio -&gt;Win32 Console application -&gt;C++. Условие:Реализовать 3 функции, каждая из которых принимает указатель на...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.11.2012, 16:54
Ответ Создать тему
Опции темы

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