gpt4 book ai didi

c++ - 将初始值设定项移动到 for 循环中的条件后面的优雅方法

转载 作者:太空宇宙 更新时间:2023-11-04 16:00:07 25 4
gpt4 key购买 nike

我有一个随机访问迭代器的循环。典型的用法是 end() 是结束后的,不应该被取消引用,所以我需要在开始初始化之前执行我的条件。这是我的具体代码:

template <typename RAI>
void foo(RAI begin, RAI end) {
typedef typename std::iterator_traits<RAI>::value_type VT;

SOME_TYPE<VT> key = SOME_TYPE<VT>(*begin);

while (begin != end) {
do_stuff(key);
do_more_stuff(key);
key = SOME_TYPE<VT>(*++begin)
}
}

如果函数被调用时 begin==end,那么我最终会取消引用 end,它位于我可能不拥有的内存空间中。我不能申报 SOME_TYPE<VT> key;如果SOME_TYPEVT没有空的构造函数。我可以放一个 if...then一开始,但这看起来很……丑陋。有没有更好的办法?

最佳答案

你不能只做这个吗?

template <typename RAI>
void foo(RAI begin, RAI end) {
typedef typename std::iterator_traits<RAI>::value_type VT;

for (; begin != end; ++begin) {
SOME_TYPE<VT> key = SOME_TYPE<VT>(*begin);
do_stuff(key);
do_more_stuff(key);
}
}

关于c++ - 将初始值设定项移动到 for 循环中的条件后面的优雅方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46430659/

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