@kurosaki-kun

Как передать в функцию указатель на std::Vector и разыменовать его?

Решаю задачу( условие в первой строке, -комментарий) и наткнулся на то,что не получается передать в функцию указатель на вектор и разыменовать его. Кто сталкивался с таким же - не пройдите мимо и не останьтесь равнодушны, а кто просто шарит - не останьтесь равнодушны. Спасибо !
//для двумерного массива вещественных чисел в куче определить вектор максимальных элементов по строкам. вектор разместить в куче
#include<stdio.h>
#include"vector"
#include<clocale>
#include<iostream>
#include<stdlib.h>
#include<time.h>

using namespace std;

void sort(int size_i, int size_j, double** arr, vector<double>& pv)
{   //цикл нахождения максимального элемента для каждой строки
    for(int i = 0; i<size_i; i++)
    {
        double max = arr[i][0];
        for(int j; j<size_j; j++)
        {
            if(max < arr[i][j])
            {
                max = arr[i][j];
            }
        }
    //запись найденного элемента в конец вектора
    pv.push_back(max);
    }
}

int main()
{
    srand(time(NULL));
    int size_i, size_j;
    cout<<"enter number of rows: ";
    cin>>size_i;
    cout<<"enter number of collums: ";
    cin>>size_j;
    cout<<endl;
    double** arr = new double*[size_i];
    //цикл выделения непрерывного блока памяти для каждого указателя
    for(int i = 0; i<size_i; i++)
    {
        arr[i] = new double[size_j];
    }
    //цикл заполнения двумерного массива вещественными цислами
    for(int i = 0; i<size_i; i++)
    {
        for(int j = 0; j<size_j; j++)
        {
            arr[i][j] = (double)(rand() % 100 + 100)/100;
        }
    }
    //цикл вывода массива на экран
    for(int i = 0; i<size_i; i++)
    {
        for(int j = 0; j<size_j; j++)
        {
            cout<<arr[i][j]<<"\t";
        }
        cout<<endl;
    }
    //
    vector<double>* pv = new vector<double>();
    sort(size_i, size_j, arr, pv);
    cout<<endl;
    for(size_t i = 0; i<pv->size(); i++)
    {
        cout<<*pv[i]<<endl;
    }

    for(int i = 0; i<size_i; i++)
    {
        delete[] arr[i];
    }
    delete[] arr;
    return 0;
}
  • Вопрос задан
  • 2576 просмотров
Пригласить эксперта
Ответы на вопрос 1
@vanyamba-electronics
sort(size_i, size_j, arr, *pv);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы