我是初学者,2个月后回到编程。几乎忘记了一切。我刚刚尝试编译的代码消除了迭代器中向量的后半部分,如果在上半部分找到了我想要的字符。
以下是代码:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main()
{
vector<string> v;
string s("hello world");
char sought = 'e';
v.push_back(s);
auto mid = (v.begin() + v.end())/2;
if (sought<*mid)
{
end = mid;
}
cout<<*v;
}
请告诉我我的错误。
另外,可以忘记编程吗?此外,一旦精通,这个概念会永远存在,还是需要不断的练习和阅读?
答案 0 :(得分:6)
首先,您无法将迭代器添加到一起(在v.begin() + v.end()
中)。相反,使用
auto mid = v.begin() + v.size() / 2;
其次,end
和it
未声明。
最后,你不能通过指定“结束”来删除矢量的一部分。您需要使用不同的方法(左侧作为练习)。