int main(){
multiset<string> graph;
graph.insert("a");
graph.insert("b");
multiset<string>::iterator it = graph.begin();
cout << *(it + 1) // Wrong
cout << *++it; // True
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么编译器在执行时会报错*(it + 1),但是*(++it)可以很好的执行。不应该it + 1和++it返回相同的值吗?
根据 的定义endl,它用于插入换行符并刷新流。我记得如果插入新行,则缓冲区将自动刷新。如果是这样,为什么endl在插入新行后仍然需要刷新流。