gpt4 book ai didi

c++ - 如何从采用对容器的 const 引用的函数返回非常量迭代器

转载 作者:行者123 更新时间:2023-11-30 02:21:18 28 4
gpt4 key购买 nike

我正在尝试编写一个模板函数来返回容器中字典顺序的最后一个元素。

根据我对 const 正确性的理解,由于该函数不修改模板参数引用,因此它应该是 const 正确的。我将如何返回一个非常量迭代器?

换句话说,该函数不会修改容器元素,因为它是常量,但该保证不应扩展到返回的迭代器,对吧?

我想表达的是,该函数不会修改任何内容,但返回的迭代器可以允许调用者这样做。

#include<iterator>

template<typename T>
typename T::iterator lexicographical_last(const T& container)
{
typename T::const_iterator b, last = container.begin();
while (b != container.end())
{
if (b < last) last = b;
++b;
}
return last;
}

最佳答案

当您通过 const 引用传递“container”时,您 promise 该函数不会修改它。这包括返回一个非 const_iterator。

如果您需要返回一个非 const_iterator,请提供一个采用可变引用的重载

template<typename T>
typename T::const_iterator lexicographical_last(const T& container);
template<typename T>
typename T::iterator lexicographical_last(T& container);

关于c++ - 如何从采用对容器的 const 引用的函数返回非常量迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48533336/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com