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

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

15.10.2020, 10:19. Показов 1224. Ответов 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
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 10:24
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
И собственно в функции возникает ошибка “Error: no operator * matches these operands”
Что не так я передаю....
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
void foo(vector<uint8_t> *a, vector<uint8_t> *b, vector<uint8_t> *r, uint8_t column)
C++
1
void foo(const vector<uint8_t> &a, const vector<uint8_t> &b, vector<uint8_t> &r, size_t column)
Добавлено через 1 минуту
Покажи весь код и задание. Нифига не понял, что ты пытаешься сделать
1
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 11:40  [ТС]
Кликните здесь для просмотра всего текста

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
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]);
}
}
void get_res(vector<uint8_t> &t1, vector<uint8_t> &t2, uint8_t row, uint8_t column)
{
for(size_t i = 0; i < row*column; i+=column*2)
foo(t1+i, t1+(i*column+column), &t2, column);
}
class Matrix
{
private: 
n, row, column;
public:
Matrix(uint64_t a, uint8t_t b, uint8_t c)
{
n=a;
row=b;
column=c;
}
//генерация n-ого количества матриц размера bxc 
void generate_matrix()
{
 vector<vector<uint8_t>> ivec (n);
for(size_t i = 0; i<n; i++)
{
ivec[i].resize(row*column);
gen_line(ivec[i], row, column); //заполнение значениями 0 и 1.
}
vector<vector<uint8_t>> r(n);
for(size_t i = 0; i < n; i++)
{
r[i].resize(column*column);
get_res(ivec[i], r[i], row, column);
}
}
}
int main()
{
Matrix a(10, 8,8);
a.generate_matrix();
}

И собственно вопрос при вызове функции foo();

Добавлено через 10 минут
oleg-m1973, вот как-то так...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 13:30
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, вот как-то так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class Matrix
{
public:
    Matrix(size_t rows, size_t cols)
    : m_rows(rows)
    , m_cols(cols)
    , m_data(rows * cols)
    {
    }
 
    uint8_t *operator[](size_t row) noexcept
    {
        return m_data.data() + m_cols * row;
    }
 
 
protected:
    size_t m_rows;
    size_t m_cols;
 
    std::vector<uint8_t> m_data;
 
};
Добавлено через 33 секунды
C++
1
void foo(Matix &matrix, ..............................)
1
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 13:57  [ТС]
oleg-m1973, а в чем у меня ошибка?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 13:59
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, а в чем у меня ошибка?
Во всём. Например, класс Матрица изначально сделан неправильно. Всё остальное - следствия.
1
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 14:06  [ТС]
oleg-m1973, а можно посоветовать где почитать как правильно создавать классы, либо пояснить в чем мой косяк.... Буду очень признателен)

Добавлено через 2 минуты
oleg-m1973, но я же делаю массив матриц, у меня есть ещё параметр n, который я указываю при создании класса. А в твоём примере нет...
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 14:08
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, но я же делаю массив матриц, у меня есть ещё параметр n, который я указываю при создании класса. А в твоём примере нет...
Вот массив матриц
C++
1
std::vector<Matrix> arr(100, Matrix(10, 20));
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 14:12  [ТС]
oleg-m1973, noexcept подчеркивается красным... и пишет что пропущена ;
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 14:13
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, noexcept подчеркивается красным... и пишет что пропущена ;
Ну, убери noexcept. А лучше включи последний стандарт в свойствах проекта
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 14:18  [ТС]
oleg-m1973, сейчас подчеркивает m_data.data() и пишет что expression must have class type
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 14:20
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, сейчас подчеркивает m_data.data() и пишет что expression must have class type
Какой у тебя компилятор?
C++
1
2
3
4
    uint8_t *operator[](size_t row) 
    {
        return &m_data[m_cols * row];
    }
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 14:32  [ТС]
oleg-m1973, а где я могу это узнать?

Добавлено через 58 секунд
oleg-m1973, platform toolset visual studio 2012(v110)
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 14:33
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, platform toolset visual studio 2012(v110)
Жесть. Установи 2019
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 14:34  [ТС]
oleg-m1973, в этом случае подчеркивает m_cols и пишет expression must have pointer to object type

Добавлено через 21 секунду
oleg-m1973, а как?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 14:36
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, а как?
https://visualstudio.microsoft.com/ru/downloads/
Которая Community, она бесплатная
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 15:48  [ТС]
oleg-m1973, а если не переустанавливпть, можно исправить ...?
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 15:49
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
oleg-m1973, а если не переустанавливпть, можно исправить ...?
Покажи как сделал. И покажи ошибки
0
21 / 19 / 6
Регистрация: 25.11.2017
Сообщений: 708
15.10.2020, 16:02  [ТС]
Сделал таким образом и проект собрался. Теперь вопрос это же я создал одну матрицу размера 4х4. А как мне создать таких матриц 10 или 30. Чтоб в конструкторе они задавались третьим параметром....
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
class Matrix
{
public:
    Matrix(size_t rows, size_t cols)
    : m_rows(rows)
    , m_cols(cols)
    , m_data(rows * cols)
    {
    }
 
    uint8_t *operator[](size_t row) 
    {
        return &m_data[m_cold*row];
    }
 
 
protected:
    size_t m_rows;
    size_t m_cols;
    std::vector<uint8_t> m_data;
 
};
int main()
{
Matrix a(4,4);
}
Добавлено через 2 минуты
Просто я хотел сделать чтоб конструктор выглядел следующим образом первый параметр это количество матриц, второй это количество столбцов и третий это количество строк.

Добавлено через 2 минуты
oleg-m1973, а у тебя получается создаётся только одна матрица
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
15.10.2020, 16:03
Цитата Сообщение от Andy_Coldfield Посмотреть сообщение
Теперь вопрос это же я создал одну матрицу размера 4х4. А как мне создать таких матриц 10 или 30. Чтоб в конструкторе они задавались третьим параметром....
Я ж тебе вроде показал, как создать массив матриц
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.10.2020, 16:03
Помогаю со студенческими работами здесь

Передача вектора в функцию.
Сабж. #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...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru