"No match for operator+"

"No match for operator+"

本文关键字:operator+ for match No      更新时间:2023-10-16

我是初学者,2个月后又回到编程。几乎忘记了一切。我刚刚尝试编译的代码消除了向量usin迭代器的后半部分,如果在前半部分找到了我想要的字符。

代码如下:

#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;
}

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

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

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

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

其次,endit是未申报的。

最后,您不能通过分配给"end"来擦除矢量的一部分。您需要使用不同的方法(作为练习保留)。

相关文章: