"不匹配运营商+"

Sla*_*lay 1 c++ iterator vector operators c++11

我是初学者,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;

}
Run Code Online (Sandbox Code Playgroud)

请告诉我我的错误是什么.

还能忘记编程吗?此外,一旦精通,这个概念会永远存在,还是需要不断的练习和阅读?

NPE*_*NPE 6

首先,您不能将迭代器添加到一起(in v.begin() + v.end()).相反,使用

auto mid = v.begin() + v.size() / 2;
Run Code Online (Sandbox Code Playgroud)

其次,end并且it是未宣布的.

最后,您无法通过指定"结束"来删除矢量的一部分.您需要使用不同的方法(左侧作为练习).