代码之家  ›  专栏  ›  技术社区  ›  Ashwin Nanjappa

VisualC++:CykddayRayay迭代器是如何使用的?

  •  6
  • Ashwin Nanjappa  · 技术社区  · 14 年前

    关于编译at代码 警告级别4(/W4) ,我明白了 C4996 警告开启 std::copy() 参数是C数组(而不是像向量那样的STL容器)的调用。解决此问题的建议解决方案似乎是使用 stdext::checked_array_iterator .

    有什么用 stdext::checked_array_迭代器 ? 它是如何工作的?

    为什么它不给出任何关于VisualC++ 2010编译的错误代码的编译警告?:

    #include <algorithm>
    #include <iterator>
    using namespace std;
    
    int main()
    {
        int arr0[5] = {100, 99, 98, 97, 96};
        int arr1[3];
        copy( arr0, arr0 + 5, stdext::checked_array_iterator<int*>( arr1, 3 ) );
    
        return 0;
    }
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Hans Olsson    14 年前

    这一页, Checked Iterators ,请描述它是如何工作的,但这句话总结如下: 选中的迭代器确保不会覆盖容器的边界。

    所以如果你超出迭代器的边界,它要么抛出异常要么调用 invalid_parameter .