STL-Funktion veraltet ?
-
//#pragma warning(disable : 4996) #include <iostream> #include <algorithm> using namespace std; template<typename T> void dcompare(T* Bereich1, T* Bereich2,const size_t len) { unsigned counter = 0; T* p2 = Bereich1+(len/sizeof(T)); pair<T*, T*> werte; werte = mismatch(Bereich1, p2, Bereich2); while (werte.first != p2) { cout << "Unterschied an Position " << static_cast<int>(werte.first-Bereich1) << "\t" ; cout << *werte.first << "\t" << *werte.second << endl; counter++; werte = mismatch(werte.first+1, p2, werte.second+1); } if (counter) cout << endl << "Es wurden " << counter << " Unterschied(e) festgestellt." << endl << endl; else cout << endl << "Die Bereiche sind identisch" << endl << endl; } int main() { short a[] = {36, 93, 9, 25, 67, 92, 34, 6, 90, 98, 74, 36, 78, 90, 35}; short b[] = {36, 93, 9, 25, 66, 92, 34, 7, 90, 98, 74, 32, 78, 91, 33}; dcompare<short>(a, b, sizeof a); }c:\programme\microsoft visual studio 8\vc\include\xutility(2519) : warning C4996: 'std::_Mismatch' wurde als veraltet deklariert
Was kann ich anstelle von std::mismatch() einsetzen, damit ich diese Warnung nicht mehr erhalte oder reicht es die Warnung abzuschalten,
dann bleibt die Warnung von Microsoft, dass diese Funktion in zukünftigen Versionen evtl. nicht mehr unterstützt wird!?
-
Die Warning kommt beim MSVC 2005 weil du unchecked iterators verwendest (unchecked im Sinn von "normale", im Gegensatz zu "checked" iterators halt).
Entweder schalte die checked iterator ganz aus, oder ...#define _SCL_SECURE_NO_DEPRECATE... dann ist Ruhe.
-
hustbaer schrieb:
#define _SCL_SECURE_NO_DEPRECATE... dann ist Ruhe.
Danke!