Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708

Передача вектора в функцию

15.10.2020, 10:19. Показов 1303. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
void foo(vector<uint8_t> *a, vector<uint8_t> *b, vector<uint8_t> *r, uint8_t column)
{
for(size_t i=0; i< column; i++)
{
for(size_t j = 0; j < column; j++)
r[i*column+j] = r[i*column+j]^(a[i]*b[j]);
}
}
// Вызов функции
for(size_t i = 0; i < row*column; i+=column*2)
foo(&a+i, &a+(i*column+column), &r, column)
И собственно в функции возникает ошибка “Error: no operator * matches these operands”
Что не так я передаю....
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2020, 10:19
Ответы с готовыми решениями:

Передача вектора в функцию
Не могу понять как передать вектор в параметры метода класса. Сама матрица читается с текстового файла И все операции должны...

Передача вектора в функцию
void foo(vector&lt;int&gt; x) { //Тело функции } void foo(vector&lt;int&gt; &amp;x) { //Тело функции } Пишут что в первой записи все...

Передача вектора в функцию
Подскажите вроде одинаковый код, но после возвращения из функции массива значения в исходном массиве меняются, а при передаче вектора нет? ...

29
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 16:03  [ТС]
Студворк — интернет-сервис помощи студентам
oleg-m1973, а я хотел двумерный вектор или вектор векторов.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 16:05
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, а у тебя получается создаётся только одна матрица
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Вот массив матриц
C++Выделить код
1
std::vector<Matrix> arr(100, Matrix(10, 20));
Здесь сто матриц размером 10 на 20

Добавлено через 1 минуту
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, а я хотел двумерный вектор или вектор векторов.
По-моему, ты хотел массив матриц, разве нет? Это трёхмерный массив
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 16:09  [ТС]
oleg-m1973, да все понял, увидел

Добавлено через 1 минуту
oleg-m1973, а как заполнить каждый вектор массива?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 16:13
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, а как заполнить каждый вектор массива?
C++
1
2
3
4
5
6
7
8
std::vector<Matrix> arr(100, Matrix(10, 20));
for(size_t ii = 0; ii < arr.size(); ++ii)
{
    Matrix &matrix = arr[ii];
    for (size_t i = 0; i < matrix.rows(); ++i)
        for (size_t j = 0; j < matrix.cols(); ++i)
            matrix[i][j] = i + j;
}
Недостающие методы допиши сам
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 17:29  [ТС]
oleg-m1973, вот собственно я и сделал метод
C++
1
2
3
4
5
void generate_m(vector<Matrix> arr(size_t n, Matrix(size_t a,size_t b))
{
for(size_t i = 0; i < arr.size; ++i)
arr[i].gen_field();
}
Но только arr мне подчеркивает и пишет ошибку.expression must have class type.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 17:32
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, вот собственно я и сделал метод
Метод? Покажи-ка весь код
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
16.10.2020, 10:06  [ТС]
Кликните здесь для просмотра всего текста

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
class Matrix
{
    
    public: 
        Matrix(size_t rows, size_t cols) 
                : m_rows (rows)
                , m_cols (cols)
                , m_data (rows * cols)
                {
                
                }
            u8 *operator[](size_t row) 
            {
                return &m_data[m_cols * row];
            }
            void generate_matrix()
            {
                    for(size_t i = 0; i <m_rows; i++)
                        for(size_t j = 0; j < m_cols; j++)
                        {
                            random_device(rd);
                            mt19937 gen(rd());
                            m_data[i * m_cols + j] = gen()%2;
                        }
                }
            }
        void get_matrix(vector <Matrix> array(size_t n, Matrix(size_t a, size_t b)))
                    {
                        for(size_t ii = 0; ii < array.size(); ++ii)
                            {
                                array[ii].generate_matrix();
                            }
                    }           
        protected:
            size_t m_rows;
            size_t m_cols;
            std::vector <uint8_t> m_data;
};
 
 
int main()
{
    size_t n = 10;
    size_t a = 4;
    size_t b = 4;
    vector <Matrix> arr(n, Matrix(a,b));
    for(size_t ii = 0; ii < arr.size(); ++ii)
    {
        arr[ii].generate_matrix();
    }
    return 0;
}

И суть том что при вызове метода get_matrix у меня в цикле array подчеркивается красным...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
16.10.2020, 11:57
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
И суть том что при вызове метода get_matrix у меня в цикле array подчеркивается красным...
Потому что это не метод а какая-то бредятина. Просто удали его и всё.

Добавлено через 1 минуту
generate_matrix тоже не должен быть методом класса Matrix

Добавлено через 1 минуту
Я тебе показал вроде выше, как заполнять матрицу.
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
1
2
3
4
5
6
7
8
std::vector<Matrix> arr(100, Matrix(10, 20));
for(size_t ii = 0; ii < arr.size(); ++ii)
{
    Matrix &matrix = arr[ii];
    for (size_t i = 0; i < matrix.rows(); ++i)
        for (size_t j = 0; j < matrix.cols(); ++i)
            matrix[i][j] = i + j;
}
Просто добавь методы rows() и cols()
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
16.10.2020, 12:15  [ТС]
А как это сделать в виде метода, а не через цикл в main’e

Добавлено через 2 минуты
oleg-m1973, я просто цикл for хочу сделать виде метода, чтоб заполнить матрицу, или так не получится?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
16.10.2020, 12:19
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
А как это сделать в виде метода, а не через цикл в main’e
Никак. Не надо делать это в виде метода.

Добавлено через 3 минуты
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, я просто цикл for хочу сделать виде метода, чтоб заполнить матрицу, или так не получится?
Это просто цикл и есть. Либо сделай отдельную функцию, которая будет заполнять её. Но особого смысла не вижу
Кстати, вот это
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
random_device(rd);
                            mt19937 gen(rd());
надо создавать один раз при старте программы, а не на каждую итерацию
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2020, 12:19

Передача вектора в функцию.
Сабж. #include &lt;iostream&gt; #include &lt;vector.h&gt; void show (); // ? int main () { vector &lt;int&gt;...

Передача вектора в функцию
вот например функция void f(vector &lt;int&gt; v) { cout &lt;&lt; v.size(); } в нее нужно передать вектор, сразу же в передаче и...

Передача вектора в функцию
И снова я сюда) Еще раз всем привет. Как передать ветор в функцию? Пробовал по указателю и ссылке , все равно ругается на что то) Вот...

Передача вектора в функцию
Как правильно передавать вектор в функцию? Опускаю подробности его инициализации, проблема в передачи в функцию. Выводит ошибки: 1)...

Передача вектора в функцию
Сабж. В главной программе есть структура: struct Complex { double Re; double Im; } com; и есть вектор: vector...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
Теория всего 6. Судьба неотвратима?
anaschu 21.07.2026
Математическое доказательство Судьбы: Точка бифуркации в едином тензорном ядре Модели ВсегоСвежее обновление питоновского ядра «Soil Chemistry 2. 0» дало нам неопровержимое математическое. . .
Теория всего 5. ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли
anaschu 21.07.2026
Единое ядро Теории Всего: Математический изоморфизм репликаторов и иллюзия свободы воли Главная задача «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы» (аттракторов. . .
сукцессия 37. Внедрил дипсик в свой оркестр из ИИ. У него закончилось пространство чата, потому опубликую выводы из его работы здесь
anaschu 21.07.2026
==================================================================== КОНТЕКСТ: Моделирование микоризной сукцессии (AM → ECM) ==================================================================== . . .
сукцессия 36. Делаю прогоны модели около порога бифуркации (превращения эндо микоризы в экто микоризу)
anaschu 21.07.2026
СУКЦЕССИЯ МИКОРИЗ: КАК МАТЕМАТИКА ОБЪЯСНЯЕТ ПОДЗЕМНУЮ ВОЙНУ Мы привыкли думать, что лес — это деревья. А грибы — это то, что мы собираем в корзинку осенью. Но если заглянуть под землю, окажется,. . .
ИИ и человечность
kumehtar 21.07.2026
Забавно, что общаясь с ИИ, я замечаю, насколько он высказывается умно, и насколько верит в людей. Он умеет прощать. Он знает как отвечать не обесценивая опыт других людей, даже если сам не верит. Он. . .
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного. 1. Почему показания термометра заряжены целью? Цель заложена в самом. . .
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru