- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
查看std::iter_swap
reference我的结论是:
struct A {};
std::experimental::optional< A > x{A{}}, y{A{}};
std::iter_swap(x, y);
是合法的。是这样吗?
要求参数是 ForwardIterator 意味着它们应该只满足一个要求:在取消引用(迭代器)之后,传递的对象应该保持有效(可取消引用?)状态。理解对吗?
最佳答案
ForwardIterator concept比你说的更受限制。您的示例仅在使用类似此实现的情况下才有效:
template<class ForwardIt1, class ForwardIt2>
void iter_swap(ForwardIt1 a, ForwardIt2 b)
{
using std::swap;
swap(*a, *b);
}
但由于不能保证您实际上不应该使用 iter_swap
作为可选。你真的应该只使用 swap for optional
关于c++ - 对 std::optional 使用 std::iter_swap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31940181/
如果我有一个容器 std::vector items ,我可以创建一个 IndirectIterator包装 std::vector::iterator并允许遍历 T的而不是 T*的。 我可以专攻it
我只是想知道,为什么有人会写这个: std::iter_swap(i, k); 而不是这个? std::swap(*i, *k); // saved a few keystrokes! 然后我研究
MSDN says : swap should be used in preference to iter_swap, which was included in the C++ Standard f
实现基本的冒泡排序以按名称对 Student 结构的 vector 进行排序。 #include #include void sortStudents(std::vector& students)
我有一个“简单”的问题:我正在尝试交换 map 中的对以更改顺序。此代码无法编译。 #include #include #include #include int main() { std
我将一个包含 20 个项目的 vector 传递给下面的函数。我的目标是更改 vector 中项目的顺序。如果列表包含项目 1 2 3 4,我希望最终结果为 4 3 2 1。基本上将第一项与最后一项切
我正在尝试概括一个函数,该函数用于将两个迭代器带入特定数据结构的 vector ,并使用 std::iter_swap 以特定方式重新排列元素(就像 std::sort 那样)。 由于这个函数实际上只
从 David Abrahams 和 Aleksey Gurtovoy 的书“C++ 模板元编程”中,我了解到 iter_swap (见下文)会比 std::swap 慢得多有时。虽然这本书有一些解释
查看std::iter_swap reference我的结论是: struct A {}; std::experimental::optional x{A{}}, y{A{}}; std::iter_
为什么/什么时候我们应该更喜欢 using std::swap; swap(a, b); over std::iter_swap(&a, &b)? 最佳答案 因为它们完全不同,所以你的问题是错误的二分
我很难理解为什么在下面的代码中直接调用 std::swap() 会导致编译错误,而使用 std::iter_swap 编译却没有任何错误. 来自 iter_swap() versus swap() -
我是一名优秀的程序员,十分优秀!