根据文档,select o.orderid, o.orderdate as "Order Date", p.productname , ct.categoryname from orders o,
order_details od , products p , customers c ,categories ct
where
od.orderid = o.orderid and p.productid = od.productid and ct.categoryid = p.categoryid
and ct.categoryname = 'Seafood';
返回
最后
如果没有找到任何元素。那是什么意思?它是否返回指向容器中最后一个元素的迭代器?或者它是否返回指向std::find
的迭代器,即指向容器外?
以下代码打印.end()
,它不是容器的元素。所以,我猜0
返回容器外的迭代器。你能确认一下吗?
std::find
答案 0 :(得分:9)
last
是find
的第二个参数的名称。它不知道你正在使用什么类型的容器,只知道你给它的迭代器。
在您的示例中,last
为vec.end()
,(根据定义)不可解除引用,因为它是最后一个元素之后的一个。因此,通过取消引用它,您将调用未定义的行为,在这种情况下表现为打印输出0。
答案 1 :(得分:2)
算法适用于范围,它由一对迭代器定义。这些迭代器作为参数传递给算法。第一个迭代器指向范围中的第一个元素,第二个参数指向范围结束时的第一个元素。可能失败的算法在失败时返回过去迭代器的副本。这是std::find
的作用:如果没有匹配的元素,则返回第二个参数。
请注意,上一段不使用单词" container"。容器具有成员函数,为您提供可用于获取容器元素的范围,但也有创建与任何容器无连接的迭代器的方法。
答案 2 :(得分:1)