STL有许多返回迭代器的函数.例如,STL列表函数erase返回迭代器(C++ 98和C++ 11).不过,我认为它被用作无效功能.即使是cplusplus.com网站也有一个包含以下代码的示例:
mylist.erase(it1, it2);
Run Code Online (Sandbox Code Playgroud)
它不返回迭代器.不应该正确的语法如下?
std::list<int>::iterator iterList = mylist.erase(it1, it2)?
Run Code Online (Sandbox Code Playgroud)
它不返回迭代器.不应该正确的语法如下?
它确实返回一个迭代器,但就像任何其他函数一样,您可以忽略返回的值.如果你只想删除一个元素并且不关心返回的迭代器,那么你可以简单地忽略它.
实际上忽略返回值比您预期的更常见.可能忽略返回值的最常见位置是返回值的唯一目的是启用链接.例如,赋值运算符通常写为
Foo& operator=(const Foo& other){
/*...*/
return *this;
}
Run Code Online (Sandbox Code Playgroud)
这样你就可以写出像a = b = c.但是,当您只写时b = c,通常会忽略该调用返回的值.还要注意,当你写b = c这个时确实会返回一个值,但是如果你只是想做这个赋值,那么除了忽略返回值之外别无选择.