<分区>
如标题,我对此感到困惑。如果我们面临迭代问题,swap
应该非常有用。可以通过交换指向内存的指针而不是内容来交换旧 vector 和新 vector 。但是,这在 std::vector
中有效,但在 std::valarray
中无效。我想知道为什么。 C++0x好像加了这个函数,为什么C++03没有?
标签 c++
<分区>
如标题,我对此感到困惑。如果我们面临迭代问题,swap
应该非常有用。可以通过交换指向内存的指针而不是内容来交换旧 vector 和新 vector 。但是,这在 std::vector
中有效,但在 std::valarray
中无效。我想知道为什么。 C++0x好像加了这个函数,为什么C++03没有?
最佳答案
因为它没有。
我怀疑还有比这更好的答案。遗漏和错误发生(另见 std::vector::resize
按值获取它的第二个参数,缺少的 std::copy_if
算法,和 the very long list of closed Standard Library defects )。
语言不断发展是件好事,这样的错误可以在语言规范的 future 修订版(如 C++0x)中得到纠正。
关于c++ - 为什么 valarray 没有像 C++03 中的 vector 那样的交换函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6885867/