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

Push_back вектора по указателю - возможно ли - C++

Восстановить пароль Регистрация
 
homk
0 / 0 / 0
Регистрация: 15.07.2015
Сообщений: 1
15.07.2015, 02:30     Push_back вектора по указателю - возможно ли #1
Я хочу объявить вектор в одной функции и работать с ним методами в другой.

Самый простой путь - объявить вектор глобально, что мне не очень нравится. Второй путь - передать в функцию копию вектора, а потом возвращать его обратно. Мне и этот путь представляется неэстетичным, поэтому я хочу передать указатель на вектор в функцию, написав что-то типа

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <vector>
#include <iostream>
 
using namespace std;
 
int function(int *vec)
{
    vec.push_back(3);
    cout << vec[0] << vec[1] << endl;
 
return 0;
}
 
int main()
{
    vector <int> vec;
    vec.push_back(1);
 
    function(&vec[0]);
 
return 0;
}
Однако, я не понимаю, указатель на что мне передавать. Указатель на первый элемент, как в примере выше, мне не нужен, так как push_back не выловит вектор по первому элементу.
Я нашел что-то близкое про vec.data(), однако все же не понимаю, как его использовать.
Я мог бы передать указатель на первую и последнюю ячейку памяти вектора, но что потом с ними делать - хз.

Где я ошибаюсь?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2015, 02:30     Push_back вектора по указателю - возможно ли
Посмотрите здесь:

C++ Vector . push_back
C++ Не изменяется элемент вектора при работе с ним по указателю
push_back vs emplace_back C++
C++ Ошибка push_back() в vector
Если возможно, упорядочить булевы вектора, или вывести сообщение "Вектора несравнимы" C++
Про list push_back C++
Push_back(1.) C++
C++ Push_back и стандарт С++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
andreysv
16 / 16 / 4
Регистрация: 02.07.2011
Сообщений: 65
15.07.2015, 03:05     Push_back вектора по указателю - возможно ли #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
2 варианта. Указатель передаёте на сам объект-контейнер.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <vector>
#include <iostream>
 
using namespace std;
 
int function(vector<int>* vec)
{
    vec->push_back(3);
    cout << (*vec)[0] << (*vec)[1] << endl;
 
return 0;
}
 
int main()
{
    vector <int> vec;
    vec.push_back(1);
 
    function(&vec);
 
return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <vector>
#include <iostream>
 
using namespace std;
 
int function(vector<int>& vec)
{
    vec.push_back(3);
    cout << vec[0] << vec[1] << endl;
 
return 0;
}
 
int main()
{
    vector <int> vec;
    vec.push_back(1);
 
    function(vec);
 
return 0;
}
Yandex
Объявления
15.07.2015, 03:05     Push_back вектора по указателю - возможно ли
Ответ Создать тему
Опции темы

Текущее время: 15:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru