Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 17

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

05.06.2018, 10:38. Показов 3429. Ответов 5

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, пожалуйста
Как можно передать вектора std::vector<short> vec; std::vector<short> vec2 в функцию writefile

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
void writeVectorA (std::istream &Afile)
{
    std::vector<short> vec; // значения из файла input.txt
    std::copy(std::istream_iterator<int>(Afile), std::istream_iterator<int>(), std::back_inserter(vec));
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    
};
 
void writeVectorD(std::istream &Dfile)
{
    std::vector<short> vec2; // значения из файла input1.txt
    std::copy(std::istream_iterator<int>(Dfile), std::istream_iterator<int>(), std::back_inserter(vec2));
    std::copy(vec2.begin(), vec2.end(), std::ostream_iterator<int>(std::cout, " "));
};
 
void writefile (std::offstream &Bfile)
 
    for (size_t i = 0; i < vec.size(); i += 14)
    {
    int index = i / 14 + 1;
    Binaryfile.write((char *)&index, sizeof(int));
 
 
    for (size_t j = 0; j < 14; j++)
    {
    Binaryfile.write((char*)&vec[i + j], sizeof(short));
    }
 
    unsigned short m_bytesCount = 0;
 
    for (size_t k = 0; k < columnCount; k++)
    {
 
    if (vec2[i + k] == 1)
    m_bytesCount |= 1 << i + k;
    else
    m_bytesCount = 0;
    }
    Binaryfile.write((char *)&m_bytesCount, sizeof m_bytesCount);
    }
 
    fout.close();
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.06.2018, 10:38
Ответы с готовыми решениями:

Как значение вектора передать из одной функции в другую?
Помогите, пожалуйста. Элементы матрицы заданы соотношением. Определить функцию, которая формирует с столбца матрицы одномерный массив....

Передача значений из одной функции в другую
Как сделать чтоб с этой функции: int string(char * ch) { int big=0,small=0,i; for(i=1;i&lt;ch;++i) { if(ch&gt;=65 &amp;&amp;...

Передача переменных из одной функции в другую
Друзья подскажите как передать вариеблы из одной функции в другую Пример function test ($var1, $var2){ } test 'test1-eq'...

5
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
05.06.2018, 10:55
Лучший ответ Сообщение было отмечено kytcenochka как решение

Решение

Цитата Сообщение от kytcenochka Посмотреть сообщение
Как можно передать вектора std::vector<short> vec; std::vector<short> vec2 в функцию writefile
Объявить их глобально
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
std::vector<short> vec; 
std::vector<short> vec2;
void writeVectorA (std::istream &Afile)
{
    std::copy(std::istream_iterator<int>(Afile), std::istream_iterator<int>(), std::back_inserter(vec));
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    
};
 
void writeVectorD(std::istream &Dfile)
{
    std::copy(std::istream_iterator<int>(Dfile), std::istream_iterator<int>(), std::back_inserter(vec2));
    std::copy(vec2.begin(), vec2.end(), std::ostream_iterator<int>(std::cout, " "));
};
void writefile (std::offstream &Bfile)
 
    for (size_t i = 0; i < vec.size(); i += 14)
    {
    int index = i / 14 + 1;
    Binaryfile.write((char *)&index, sizeof(int));
 
 
    for (size_t j = 0; j < 14; j++)
    {
    Binaryfile.write((char*)&vec[i + j], sizeof(short));
    }
 
    unsigned short m_bytesCount = 0;
 
    for (size_t k = 0; k < columnCount; k++)
    {
 
    if (vec2[i + k] == 1)
    m_bytesCount |= 1 << i + k;
    else
    m_bytesCount = 0;
    }
    Binaryfile.write((char *)&m_bytesCount, sizeof m_bytesCount);
    }
 
    fout.close();
}
1
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 17
05.06.2018, 11:28  [ТС]
Спасибо!
Но при отладке, после выхода из функции значения вектора обнуляются, следовательно в функцию writefile поступают пустые вектора. Как решить эту проблему?
0
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
05.06.2018, 12:42
Цитата Сообщение от kytcenochka Посмотреть сообщение
Но при отладке, после выхода из функции значения вектора обнуляются
В каком месте? Покажите весь код
0
0 / 0 / 0
Регистрация: 27.03.2018
Сообщений: 17
05.06.2018, 12:52  [ТС]
да, при входе в функцию вектор заполняется из файла


writeFile.h
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
53
54
55
56
57
58
59
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
#include <string>
#include <sstream>
 
std::vector<short> vec;
std::vector<short> vec2;
const size_t columnCount = 6;
 
 
std::vector<short> writeVectorAnalog (std::istream &Afile)
{
    std::vector<short> vec; // значения из файла input.txt
    std::copy(std::istream_iterator<int>(Afile), std::istream_iterator<int>(), std::back_inserter(vec));
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, " "));
    return vec;
    
};
 
void writeVectorDiscret(std::istream &Dfile)
{
    
    std::vector<short> vec2; // значения из файла input.txt
    std::copy(std::istream_iterator<int>(Dfile), std::istream_iterator<int>(), std::back_inserter(vec2));
    std::copy(vec2.begin(), vec2.end(), std::ostream_iterator<int>(std::cout, " "));
};
 
void writeBinaryFile (std::ostream &Binaryfile){ // при входе в эту функцию векторы пустые
 
    
    for (size_t i = 0; i < vec.size(); i += 18) //
    {
    int index = i / 18 + 1;// изменить
    Binaryfile.write((char *)&index, sizeof(int));
 
 
    for (size_t j = 0; j < columnCount; j++) // 
    {
    Binaryfile.write((char*)&vec[i + j], sizeof(short));
    }
 
    // Запись дискретных каналов в файл
    unsigned short m_bytesCount = 0;
 
    for (size_t k = 0; k < columnCount; k++)
    {
 
    if (vec2[i + k] == 1)
    m_bytesCount |= 1 << i + k;
    else
    m_bytesCount = 0;
    }
    Binaryfile.write((char *)&m_bytesCount, sizeof m_bytesCount);
    }
    
}
0
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
05.06.2018, 13:15
kytcenochka, из тела функций строки
C++
1
    std::vector<short> vec; // значения из файла input.txt
и
C++
1
    std::vector<short> vec2; // значения из файла input.txt
разумеется, надо было удалить, т.к. Имена переменных должны быть уникальны в одной области видимости (c++)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.06.2018, 13:15
Помогаю со студенческими работами здесь

Передача аргумента из одной функции в другую
Подскажите, как передать значение переменной из одной функции в другую!

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

Передача переменной из одной функции в другую
Всем доброго времени суток. В Excel'e есть 2 кнопки: 1-вызывает функцию test() 2-вызывает функцию transport() Как передать массив...

Передача переменной из одной функции в другую
Доброго времени суток, мне нужно передать переменные *x и n из функции main в функции А10, A8, M5, подскажите как это сделать #include...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru