C++ &引用;运算符+不匹配&引用;
我是一个初学者,两个月后就开始编程了。几乎忘记了一切。我刚才试图编译的代码在迭代器中消除了向量的后半部分,如果我想要的字符是在前半部分找到的 代码如下:C++ &引用;运算符+不匹配&引用;,c++,c++11,vector,iterator,operators,C++,C++11,Vector,Iterator,Operators,我是一个初学者,两个月后就开始编程了。几乎忘记了一切。我刚才试图编译的代码在迭代器中消除了向量的后半部分,如果我想要的字符是在前半部分找到的 代码如下: #include<iostream> #include<string> #include<vector> using namespace std; int main() { vector<string> v; string s("hello world"); char so
#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;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
向量v;
字符串s(“你好世界”);
char='e';
v、 推回;
自动中间=(v.begin()+v.end())/2;
首先,如果(seeded,您不能将迭代器添加到一起(在v.begin()+v.end()
中)。请使用
auto mid = v.begin() + v.size() / 2;
其次,end
和it
是未声明的
最后,您不能通过指定“end”来删除向量的一部分。您需要使用不同的方法(留作练习)。首先,您不能同时添加迭代器(在v.begin()+v.end()
中)。相反,请使用
auto mid = v.begin() + v.size() / 2;
其次,end
和it
是未声明的
最后,您不能通过指定“结束”来擦除向量的一部分。您需要使用不同的方法(作为练习).你的代码无效,end/it
从哪里来?你肯定不想添加开头到结尾。而且你从来没有声明过it
或end
。在询问算法之前纠正你的基本错误。为什么不呢?我意识到了,但我能解释一下吗?我遗漏了一些东西。显然。请出示真实的代码e、 couty您的代码无效,end/it
从何而来?您肯定不想添加Begin to end。另外,您从未声明it
或end
。请在询问算法之前更正您的基本错误。为什么不?我意识到了,但我可以解释一下吗?我遗漏了一些东西。显然。请出示真正的代码,coutWorked!为什么v.size()有效,但v.end()无效?在我正在阅读的书中给出了相同的方式,但没有解释。由于我错误的直觉,我显然遗漏了一些愚蠢的东西。@user2530836:思考一下:v.begin()+v.end()的类型和值应该是什么
be?我很惊讶这能起作用,因为sequed
是char,*mid是std::string。@NPE,值将是11,因为这是存在的字符数(以字符串的形式),对吗?v.begin()+v.size()不会给出相同的值吗?我意识到了我的错误。v.end()计算到最后一个元素之后的元素。对吗?有效!为什么v.size()有效,但v.end()无效?在我正在阅读的书中给出了相同的方式,但没有解释。由于我错误的直觉,我显然遗漏了一些愚蠢的东西。@user2530836:思考一下:v.begin()+v.end()的类型和值应该是什么
be?我很惊讶这能起作用,因为seek
是char,*mid是std::string。@NPE,值将是11,因为这是当前的字符数(以字符串的形式),对吗?v.begin()+v.size()不会给出相同的值吗?我意识到了我的错误。v.end()在最后一个之后计算元素。对吗?