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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
#1

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

05.05.2014, 18:48. Просмотров 1325. Ответов 10
Метки нет (Все метки)

Сабж.
В главной программе есть структура:
C++
1
2
3
4
5
struct Complex
{
    double Re;
    double Im;
} com;
и есть вектор:
C++
1
vector <Complex> Vec;
Есть функция для обработки хранящихся в векторе значений. Вопрос, как передать в функцию копию вектора - раз, и как получить из функции доступ непосредственно для обработки самих значений вектора - два.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2014, 18:48     Передача вектора в функцию
Посмотрите здесь:

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

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

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

Передача вектора в функцию по указателю - C++
Есть функция с таким прототипом: void Split(const string&amp; text, char delimeter, const vector&lt;string&gt;* pPars); как воспользоваться...

Передача в функцию вектора пар - C++
Есть vector&lt;pair&lt;int, float&gt;&gt; myVec;. Есть функция, которая принимает вектор с типом float: void myFunc( vector&lt;float&gt; &amp;vec ) { /* ... */...

Передача вектора в функцию по ссылке - C++
Здравствуйте. Как решить эту ошибку. Ошибка: In member function ‘void Blocks::SetCube(std::vector&lt;Texture2f&gt;*,...

Передача вектора списков в функцию и взаимодействие с ним - C++
Почему это не работает? #include &lt;fstream&gt; #include &lt;vector&gt; #include &lt;list&gt; using namespace std; ifstream in...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BeginerMan
49 / 48 / 5
Регистрация: 17.11.2012
Сообщений: 427
05.05.2014, 18:58     Передача вектора в функцию #2
Точно не понял что тебе надо под цифрой 2, но вот примерно такая функция.
C++
1
2
3
4
5
void function(vector<Complex>& vec)
{
//Делаешь с этим вектором что-нибудь.
//Результаты сохраняться в твой вектор, который ты передал в эту функцию.
}
Nick Alte
Эксперт С++
1628 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,931
Завершенные тесты: 1
05.05.2014, 18:59     Передача вектора в функцию #3
Цитата Сообщение от Super GT Посмотреть сообщение
Вопрос, как передать в функцию копию вектора - раз
Если именно копию, то так:
C++
1
void foo(vector<Complex> v)
Если хочется сэкономить на создании копии, то можно передать ссылку на вектор, запретив изменение:
C++
1
void foo(const vector<Complex>& v)
Цитата Сообщение от Super GT Посмотреть сообщение
как получить из функции доступ непосредственно для обработки самих значений вектора - два
Передать ссылку, не запрещающую изменение:
C++
1
void foo(vector<Complex>& v)
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
05.05.2014, 19:57  [ТС]     Передача вектора в функцию #4
Пишет ошибку: "использование имени типа не допускается."

Добавлено через 44 минуты
Решено, надо было писать
C++
1
void foo(vector<Complex> (v) )
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
05.05.2014, 20:06     Передача вектора в функцию #5
Цитата Сообщение от Super GT Посмотреть сообщение
Решено, надо было писать
Чет ерунда какая-то. Телепатов нет, покажите весь код.
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
05.05.2014, 20:39  [ТС]     Передача вектора в функцию #6
Ап, новая ошибка:
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
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
 
struct Complex
{
    double Re;
    double Im;
} com;
 
// Эта функция выводит содержимое вектора в консоль
// vector < vector <Complex> > Name - это вектор с данными
void Det(vector < vector <Complex> > (Vec) ) 
{
     for (int i = 0; i < 4; i++) 
    { 
           for (int j = 0; j < 4; j++)
    {
         cout << Vec[i][j].Re << "|" << Vec[i][j].Im << " ";
            }
                cout << endl;
     }
}
 
int main()
{
   // вызов функции
    Det(vector < vector <Complex> > (A) ); // => тут ошибка
 
    system("pause");
    return 0;
}
Компилятор ругается: "в вызове функции отсутствует список аргументов; используйте "&std::vector<_Ty>::size" для создания указателя на член"
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
05.05.2014, 21:28     Передача вектора в функцию #7
И что за A, которое нигде не объявлено?
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
05.05.2014, 23:59  [ТС]     Передача вектора в функцию #8
vector < vector <Complex> > A - это вектор с данными, и да он объявлен.
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
06.05.2014, 05:25     Передача вектора в функцию #9
C++
1
Det(vector < vector <Complex> >);
Так будет вернее.
Только логично, что будет создана локальная копия и работа будет производиться с ней, а так как конструктор пустой, то в цикле будет обращение к несуществующим элементам.
Во-первых почему циклы ограничены 4 итерациями, а во-вторых объект у вас не просто неинициализирован, но еще и не содержит самих чисел. И что вы собираетесь увидеть на экране?
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
06.05.2014, 17:09  [ТС]     Передача вектора в функцию #10
Вот такой вектор успешно передается в функцию!
C++
1
void Func( vector<Complex> (v) )
А такой не передается! (это вектор векторов):
C++
1
void Func ( vector < vector<Complex> > (A) )
Добавлено через 17 минут
Алилуйа, все заработало! Одна буква в названии вектора была на русском написана, отсюда и баг.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2014, 17:17     Передача вектора в функцию
Еще ссылки по теме:

Передача строки из вектора строк в функцию (исправить ошибку) - C++
Доброго все здравия, заполняю вектор строк, затем поочередно, каждая строка вектора передается в функцию. Все работает, но появляется...

Передача вектора по ссылке - C++
Делаю задание Страуструпа на шаблоны, но столкнулся с тем что передавая вектор по ссылке он передаётся не по ссылке (такая вот тавтология)....

Передача вектора по ссылке - C++
Как передать в функцию вектор по ссылке/указателю, чтобы не происходило его постоянное копирование?

Передача вектора из класса в класс? - C++
Доброго времени суток! У меня возникла проблема в очень простой программе. Я передаю функции из класса board.cpp в класс test.cpp. У меня...

Правильный способ передачи вектора в функцию - C++
Доброго времени суток, начав изучать язык столкнулся с данным вопросом (название темы), сделал это так: #include &quot;iostream&quot; #include...


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

Или воспользуйтесь поиском по форуму:
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,013
06.05.2014, 17:17     Передача вектора в функцию #11
Пусть так.
Покажите-ка окончательный рабочий вариант.
Yandex
Объявления
06.05.2014, 17:17     Передача вектора в функцию
Ответ Создать тему
Опции темы

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