1

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

}

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

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

4

1 回答 1

6

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

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

其次,endit申报。

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

于 2013-09-24T09:21:59.287 回答