2010-08-30 35 views
4

警告級別4編譯代碼(/ W4),我得到std::copy()調用,它的參數是C數組(不STL容器,如矢量)C4996警告。解決這個問題的建議解決方案似乎是使用stdext::checked_array_iteratorVisual C++:check_array_iterator如何有用?

有什麼用?stdext :: checked_array_iterator?它是如何工作的?

爲什麼它不給任何編譯這塊的錯誤代碼在Visual C編譯警告++ 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; 
} 

回答

2

此頁面,Checked Iterators,形容它是如何工作的,但是這句話總結道:檢查迭代器確保不會覆蓋容器的邊界。

所以,如果你超出了迭代器的範圍,它會拋出異常或者調用invalid_parameter

+0

這並不是真的回答這個問題 – 2015-01-20 17:54:53

相關問題