С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
AleksandrMild
0 / 0 / 0
Регистрация: 02.09.2015
Сообщений: 18
1

Возврат вектора из функции

04.09.2015, 16:15. Просмотров 1501. Ответов 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
#include <vector>  //И другие
 
vector<int> &Build_vector_N(vector<int> &, char); //Фуннкция по созданию вектора N
 
int main()
{
vector <int>    Nvec;  //Создали вектор 
char Find='N';             //это исомый элемент, к вопросу дела не имеет
 
Build_vector_N(Nvec, Find);   //Запускаем нашу функцию, которая должна изменить вектор
 
cout <<"Size of vector" << Nvec.size();  /Размер вектора правильный
 
 
//вывод вектора
         for (unsigned int i=0; i<Nvec.size(); i++)
        {
        cout << "\nNvec [" <<i <<"] =" << Nvec[i] ;            //все элементы выводятся нулями
        if (i%5==0) getchar(); 
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////
// Тело функции
 
vector<int> Build_vector_N(vector<int> &Nvec, char Find_Symb)
{
 //В теле функции идет процесс формирования вектора
//cout выводит все правильно
 
}
Пробовал и через return vec. В результате на выходе программы все элементы вектора равны 0. А размер вектора выведен правильно.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.09.2015, 16:15
Ответы с готовыми решениями:

возврат вектора из ф-ии
void func(std::vector&lt;const char*&gt;&amp; ret) { ret.push_back(&quot;абв&quot;); } int...

Возврат 2 значений из функции с одним вызовом этой же функции
Вообщем где то в какой то игре была хукнута одна функция int function(int...

Возврат массива из функции
Есть задача: используя функции, вычислить количество элементов заранее...

Возврат массива из функции
В объекте есть массив int state;, который мне нужно из него вытащить. Вижуал...

Возврат массива из функции
Здравствуйте, Не пойму почему не работает данный код. Пишет cannot convert...

6
Croessmah
++Ͻ
14777 / 8453 / 1605
Регистрация: 27.09.2012
Сообщений: 20,804
Записей в блоге: 2
Завершенные тесты: 1
04.09.2015, 16:19 2
C++
1
vector<int> &Build_vector_N(vector<int> &, char);
возвращаемое значение не ссылкой сделайте
0
AleksandrMild
0 / 0 / 0
Регистрация: 02.09.2015
Сообщений: 18
04.09.2015, 23:24  [ТС] 3
Цитата Сообщение от Croessmah Посмотреть сообщение
возвращаемое значение не ссылкой сделайте
Что-то не помогло.
Попробовал написать через указатель:
C++
1
2
3
4
5
6
7
8
9
10
11
main {
char Find;
vector<int> Nvec;
Build_vector_N(&Nvec, Find);
}
Функция:
void Build_vector_N(vector<int> *Nvector, char Find_Symb)
{
Nvectro.resize(++num);         //Подозреваю, что проблема именно в том, что идет увеличение массива и ссылки
                                          //как-то теряются
}
Nvectro.resize(++num); подозреваю, что проблемма именно в том, что вектор - динамичный.
0
Perfilov
264 / 164 / 56
Регистрация: 25.02.2015
Сообщений: 435
04.09.2015, 23:50 4
вы что-то внутри своей билд функции напутали скорее всего. вот почти копия того, что вы пытаетесь сделать:
http://cpp.sh/4iyq

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
#include <iostream>
#include <string>
#include <vector>
 
typedef std::vector<int> Vec;
 
Vec& BuildVector(Vec& v)
{
    v.clear();
    v.push_back(1);
    v.push_back(2);
    v.push_back(3);
    return v;
}
 
int main()
{
    Vec v;
    BuildVector(v);
    
    std::cout << "v.size() = " << v.size() << std::endl;
    for (int i = 0; i < v.size(); ++i)
    {
        std::cout << "v[" << i << "] = " << v[i] << std::endl;
    }
    
    return 0;
}
0
Kerry_Jr
Эксперт PHP
2211 / 2007 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
05.09.2015, 00:12 5
Цитата Сообщение от AleksandrMild Посмотреть сообщение
C++
1
Nvector.resize(++num);
передали по указателю - обращайтесь по указателю
C++
1
Nvector->resize(++num);
0
AleksandrMild
0 / 0 / 0
Регистрация: 02.09.2015
Сообщений: 18
05.09.2015, 10:28  [ТС] 6
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
передали по указателю - обращайтесь по указателю
Спасибо за ответ, в этом месте помогло. Я не знал о таком символе как '->'.

Ниже выскочила другая ошибка при присвоении элементу вектора числа.
C++
1
2
3
4
5
6
7
 InStream << ReadData;       // Передача string в поток
        InStream >> Symb >> NumN;        // Достаем из потока char и int 
                                                             // В нашем случае int - идет по порядку
        Nvector -> resize(++NumN);     // Увеличиваем вектор для помещения туда нашего числа
        Nvector[NumN]=NumN;            // Здесь при присвоении ошибка: 
                                                       // E2285 could not find a match for 'vector<unsigned int,        
 //allocator<unsigned int>>::operator=(unsigned int)'
0
Kerry_Jr
Эксперт PHP
2211 / 2007 / 940
Регистрация: 14.05.2014
Сообщений: 5,869
Записей в блоге: 1
Завершенные тесты: 5
05.09.2015, 11:20 7
Цитата Сообщение от AleksandrMild Посмотреть сообщение
C++
1
Nvector[NumN]=NumN;
Снова то же самое: передали по указателю - обращайтесь по указателю
C++
1
(*Nvector)[NumN] = NumN;
1
05.09.2015, 11:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2015, 11:20

Возврат массива из функции
Здравствуйте! Нужно решить задачу, но для её решения я не могу понять как...

Возврат boost::any из функции
virtual bool write_value(const string_type&amp; name_value, const boost::any&amp;...

Возврат строки из функции
Здравствуйте. Пишу программу для работы с процессами, мне нужно, чтобы в...


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

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

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