“不匹配运营商+”

时间:2013-09-24 09:20:05

标签: c++ c++11 vector iterator operators

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

}

请告诉我我的错误。

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

1 个答案:

答案 0 :(得分:6)

首先,您无法将迭代器添加到一起(在v.begin() + v.end()中)。相反,使用

auto mid = v.begin() + v.size() / 2;

其次,endit未声明。

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