c++容器加迭代器和python装饰器的

发布时间:2019-04-23 21:46:33编辑:auto阅读(2006)

    c++利用对象实现简单数据的测试:

    class TestDataEmptyArray {
    public:
        static vector<int> get_array() {
            std::vector<int> vec {};
            return vec;
        }
    
    };
    
    class TestDataUniqueValues {
    public:
        static vector<int> get_array() {
            // declare a vector with minimum 2 values that are unique
            std::vector<int> vec {1, 2, 3, 4, 5};
            return vec;
        }
    
        static int get_expected_result() {
            //declare the former vector
            std::vector<int> vec {get_array()};
            //search for the smallest element with algorithm
            std::vector<int>::iterator result = std::min_element(std::begin(vec), std::end(vec));
            //return the index of the smallest element as a type int
            return std::distance(std::begin(vec), result);
        }
    
    };
    
    class TestDataExactlyTwoDifferentMinimums {
    public:
        static vector<int> get_array() {
            //declare a vector that has atleast 2 non unique number in it
            std::vector<int> vec {1, 2, 3, 4, 3, 2, 1};
            return vec;
        }
    
        static int get_expected_result() {
            //declare tha former vector
            std::vector<int> vec {get_array()};
            ////search for the smallest element with algorithm
            std::vector<int>::iterator result = std::min_element(std::begin(vec), std::end(vec));
            //return the index of the smallest element as a type int
            return std::distance(std::begin(vec), result);
        }
    
    };

    python 利用装饰器进行实现

    class TestDataEmptyArray(object):
        
        @staticmethod
        def get_array():
            return []
    
    class TestDataUniqueValues(object):
    
        @staticmethod
        def get_array():
            arr = [2,3,4,6,5]
            return arr
    
        @staticmethod
        def get_expected_result():
            return 0
    
    class TestDataExactlyTwoDifferentMinimums(object):
    
        @staticmethod
        def get_array():
            arr = [2,3,4,2,4]
            return arr
    
        @staticmethod
        def get_expected_result():
            return 0

    相比较来说,python实现的代码更加简洁。

关键字