假设我有一个整数向量:
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,我只是想弄清楚如何正确使用指针以及如何准备算法,以便以后可以递归地构建它。预先感谢!
正确的方法是:
for (int wsk : v) {
cout << wsk;
}
如果您坚持使用指针:
int* first = v.data();
for (size_t j = 0; j < v.size(); ++j) {
cout << first[j];
}