C ++ Изменение вектора с помощью указателя - PullRequest
0 голосов
/ 02 декабря 2011

Итак, у меня есть вектор, который либо полон целых чисел.Назовем этот вектор Vect.У меня есть код в main.cpp и VectorList.h, и я не могу изменить этот факт.В VectorList.h одна из моих функций:

void insertAtFront( const int & );

Теперь, когда я сталкиваюсь с проблемой, я знаю, что могу добавить целое число в начало вектора, используя функцию std::vector.insert().Но insertAtFront не имеет доступа к самому вектору, однако это единственный элемент данных в VectorList.h:

vector< int > *vList

Итак, мой вопрос: как я могу добавить значение в начало?вектора Vect с использованием только этого указателя *vList?

Моя первая идея была примерно такой:

&vList.insert(&vList.begin(), 1, &value)    // with value being the input integer

, но это не работает: / какие-либо предложения?

Ответы [ 2 ]

3 голосов
/ 02 декабря 2011

Если у вас есть указатель на вектор, вам нужно будет использовать оператор ->.Использование оператора & в этом случае даст вам адрес возвращаемого значения vList.begin().Это не будет работать слишком хорошо, учитывая, что вы не можете использовать оператор . для указателя для начала.Вместо этого вам нужно разыменовать указатель.Попробуйте:

vList->insert(vList->begin(), value);

Редактировать: Я не уверен, зачем вам нужен средний аргумент в этом случае.Вы должны быть в порядке, опуская это.Я сделал это в строке кода, которую я написал здесь.

2 голосов
/ 02 декабря 2011

Предполагая, что указатель указывает на действительное vector, просто разыменуйте вектор и вызовите insert:

vList->insert(vList->begin(), value);
// same thing as: (*vList).insert(vList->begin(), value);
// same thing as: (*vList).insert((*vList).begin(), value);
// same thing as: vList->insert((*vList).begin(), value);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...