您是否可以循环更改指针?

问题描述 投票:1回答:1

假设我有一个整数向量:

vector<int> v(n);

我用有效值填充for循环。我想做的是在此向量中找到给定值的索引。例如,如果我有一个向量1, 2, 3, 4和一个值为2,我将得到一个索引=1。该算法将假定该向量以升序排序,它将检查一个中间数字,然后根据该数字值(如果它大于或小于我们要求的值),它将检查向量的一半。我被要求做recursive并使用pointer。所以我写了一个void函数,如:

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

并且我可以轻松访问向量的第0个元素。但是我似乎缺少一些基本知识,因为我不能真正将其放在for循环中以打印所有值。我想做这样的事情:

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

有没有做这种事情的方法?我也知道它是recurveve,我只是想弄清楚如何正确使用指针以及如何准备算法,以便以后可以递归地构建它。预先感谢!

c++ pointers
1个回答
1
投票

正确的方法是:

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

如果您坚持使用指针:

int* first = v.data();
for (size_t j = 0; j < v.size(); ++j) {
  cout << first[j];
}
© www.soinside.com 2019 - 2024. All rights reserved.