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

  • 2020 年 1 月 20 日
  • 筆記

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实现的代码更加简洁。