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

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

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

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

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

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

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

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

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

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

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

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

10
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)
{
//Делаешь с этим вектором что-нибудь.
//Результаты сохраняться в твой вектор, который ты передал в эту функцию.
}
0
Nick Alte
Эксперт С++
1643 / 1015 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 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)
0
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
05.05.2014, 19:57  [ТС] #4
Пишет ошибку: "использование имени типа не допускается."

Добавлено через 44 минуты
Решено, надо было писать
C++
1
void foo(vector<Complex> (v) )
0
0x10
2510 / 1688 / 254
Регистрация: 24.11.2012
Сообщений: 4,233
05.05.2014, 20:06 #5
Цитата Сообщение от Super GT Посмотреть сообщение
Решено, надо было писать
Чет ерунда какая-то. Телепатов нет, покажите весь код.
0
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" для создания указателя на член"
0
Somebody
2791 / 1602 / 148
Регистрация: 03.12.2007
Сообщений: 4,200
Завершенные тесты: 1
05.05.2014, 21:28 #7
И что за A, которое нигде не объявлено?
0
Super GT
4 / 4 / 0
Регистрация: 23.12.2012
Сообщений: 131
05.05.2014, 23:59  [ТС] #8
vector < vector <Complex> > A - это вектор с данными, и да он объявлен.
0
iRomul
159 / 100 / 11
Регистрация: 17.10.2012
Сообщений: 480
Завершенные тесты: 1
06.05.2014, 05:25 #9
C++
1
Det(vector < vector <Complex> >);
Так будет вернее.
Только логично, что будет создана локальная копия и работа будет производиться с ней, а так как конструктор пустой, то в цикле будет обращение к несуществующим элементам.
Во-первых почему циклы ограничены 4 итерациями, а во-вторых объект у вас не просто неинициализирован, но еще и не содержит самих чисел. И что вы собираетесь увидеть на экране?
0
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 минут
Алилуйа, все заработало! Одна буква в названии вектора была на русском написана, отсюда и баг.
0
0x10
2510 / 1688 / 254
Регистрация: 24.11.2012
Сообщений: 4,233
06.05.2014, 17:17 #11
Пусть так.
Покажите-ка окончательный рабочий вариант.
0
06.05.2014, 17:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2014, 17:17
Привет! Вот еще темы с ответами:

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

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

Составить главную программу и функцию. Для данного вектора А(М) найти количество неповторяющихся элементов вектора - C++
Здравствуйте. Буду очень благодарен,если кто нибудь напишет два кода к этим задачам. Спасибо за внимание. Задача 1. Составить...

Написать функцию для класса, возращающую данный из вектора обьектов класса по итератору вектора - C++
День=добрый как написать функцию для класса возращающую данный из вектора обьектов класса по итератору вектора?? стока запроса: ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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