⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_algobase.cpp

📁 stl的源码
💻 CPP
字号:
/***********************************************************************************  test_algobase.cpp * Copyright (c) 1997 * Mark of the Unicorn, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation.  Mark of the Unicorn makes no * representations about the suitability of this software for any * purpose.  It is provided "as is" without express or implied warranty.***********************************************************************************/# include "Prefix.h"# if defined (EH_NEW_HEADERS)# ifdef __SUNPRO_CC# include <stdio.h># endif#include <algorithm># else#include <algo.h># endif#include "Tests.h"#include "LeakCheck.h"#include "TestClass.h"// EH_USE_STDenum { kBufferSize = 100 };struct test_uninitialized_copy{    test_uninitialized_copy()        : stuff( new TestClass[kBufferSize] ), end_of_stuff(stuff + kBufferSize) {        gTestController.SetCurrentTestName("uninitialized_copy()");        }    ~test_uninitialized_copy() { delete[] stuff; }    void operator()( TestClass* buffer ) const    {        EH_STD::uninitialized_copy((TestClass*)stuff, (TestClass*)end_of_stuff, buffer );        EH_ASSERT( EH_STD::equal( (TestClass*)stuff, (TestClass*)end_of_stuff, buffer ) );        stl_destroy( buffer, buffer+kBufferSize );    }private:    TestClass * stuff;    TestClass * end_of_stuff;};struct test_uninitialized_fill{    test_uninitialized_fill() {        gTestController.SetCurrentTestName("uninitialized_fill()");    }    void operator()( TestClass* buffer ) const    {        TestClass* buf_end = buffer + kBufferSize;        EH_STD::uninitialized_fill( buffer, buf_end, testValue );        for ( EH_CSTD::size_t i = 0; i < kBufferSize; i++ )            EH_ASSERT( buffer[i] == testValue );        stl_destroy( buffer, buf_end );    }private:    TestClass testValue;};struct test_uninitialized_fill_n{    test_uninitialized_fill_n() {        gTestController.SetCurrentTestName("uninitialized_fill_n()");    }    void operator()( TestClass* buffer ) const    {        TestClass* end = buffer + kBufferSize;        EH_STD::uninitialized_fill_n( buffer, (EH_CSTD::size_t)kBufferSize, testValue );        for ( EH_CSTD::size_t i = 0; i < kBufferSize; i++ )            EH_ASSERT( buffer[i] == testValue );        stl_destroy( buffer, end );    }private:    TestClass testValue;};void test_algobase(){  // force alignment  double arr[ sizeof(TestClass) * kBufferSize ];  TestClass* c = (TestClass*)arr;  WeakCheck( c, test_uninitialized_copy() );  WeakCheck( c, test_uninitialized_fill() );  WeakCheck( c, test_uninitialized_fill_n() );}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -