【发布时间】:2019-04-26 07:25:44
【问题描述】:
我需要解释我的作业:/ 我需要用 C++ 编写一个函数,它需要 3 个 arg(向量切片和 int 的初始和最终迭代器)并返回此向量中第一个找到的 int(3th arg) 的 const 迭代器.如果这个 int 不在我们的向量中,我们应该返回 const final 向量迭代器。此函数使用迭代器而不是索引,并且仅使用“向量标头”。这是示例程序
int main() {
const std::vector<int> vector {3, -1, 7, 12, -5, 7, 10};
std::cout << find(vector.begin() + 3, vector.end(), 7) - vector.begin() << std::endl; }
这是我试图解决的问题
#include <iostream>
#include <vector>
using namespace std;
vector<int>::const_iterator find(vector<int>::const_iterator, vector<int>::const_iterator, int);
int main() {
const std::vector<int> vector {3, -1, 7, 12, -5, 7, 10};
std::cout << find(vector.begin() + 3, vector.end(), 7) - vector.begin() << std::endl;
}
vector<int>::const_iterator find(vector<int>::const_iterator begin, vector<int>::const_iterator end, int num) {
for(vector<int>::iterator iterator = begin; iterator != end;) {
if (*iterator == num){
return iterator;
} else {
return end;
}
}
}
【问题讨论】:
-
你忘记问了 :-)
-
有什么问题?对我来说似乎是一个好的开始。不要忘记实际增加迭代器!
-
++iterator丢失。 -
你为什么[试图]从
const_iterator切换到iterator? -
重新考虑
else。代码目前说的是,如果我第一次尝试没有找到数字,我放弃。