Вы можете изменить указатель в l oop? - PullRequest
0 голосов
/ 30 марта 2020

Допустим, у меня есть вектор целых чисел:

vector<int> v(n);

, который я заполняю в для l oop действительными значениями. Я хочу найти индекс данного значения в этом векторе. Например, если у меня есть вектор 1, 2, 3, 4 и значение 2, я получу индекс = 1. Алгоритм будет предполагать, что вектор отсортирован в порядке возрастания, он будет проверять среднее число, а затем в зависимости от его Значение (если оно больше или меньше того, которое мы запрашиваем) будет проверять одну из половинок вектора. Меня попросили сделать это рекурсивно и использовать указатель . Поэтому я написал функцию типа void:

void findGiven(vector<int> &v){
    int i = 0;
    int *wsk = &v[i];
}

, и я легко могу получить доступ к 0-му элементу вектора. Однако у меня, кажется, есть некоторые базовые c недостатки в знаниях, потому что я не могу поместить это в a для l oop, чтобы напечатать все значения. Я хотел сделать что-то вроде этого:

for (int j = 0; j<v.size(); j++){
   cout << *wsk[j];
}

Есть ли способ сделать такое? Также я знаю, что это рекурсивно, я просто пытаюсь понять, как правильно использовать указатели и как подготовить алгоритм, чтобы позже я мог построить его рекурсивно. Заранее спасибо!

1 Ответ

3 голосов
/ 30 марта 2020

Правильный путь:

for (int wsk : v) {
    cout << wsk;
}

Если вы настаиваете на указателях:

int* first = v.data();
for (size_t j = 0; j < v.size(); ++j) {
  cout << first[j];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...