欢迎光临散文网 会员登陆 & 注册

Pylist的C++语言实现

2023-08-25 19:25 作者:YULINKING  | 我要投稿

我现在是一个在读高三牲,平常的爱好就是捣鼓程序,我主要是用python语言的,但是我以前的信息老师说单学习一门语言对未来的工作是不利的,于是我现在经常搞一些为学校专供的项目,都是基于多种(语言)开发的,现在差不多是全栈程序员。 最近开始捣鼓C++,希望能用C++来搞定我以前用Python开发的项目以提高效能和降低资源占用,但是我以前的项目都涉及到了多类型的列表,C++都是固定类型的,这对我很不利,但是以前也接触过C语言,也算有一点了解,所以在网上冲浪找答案无果后我开始独立构思,并且付诸实践

这是我最开始的思路:首先建立一个PyType类,内有类成员变量 char *valueType;

auto getValue();

我试图用再赋值的方式来控制返回值的类型: auto getValue(){

return value;

}

this->getValue=getValue;

但是没一会就发现好像没办法赋值。。。 难道就要止步于此了吗? 不不不,我发现了这个: template

那么到这里逻辑就很清晰了,直接做一个容器PyType,用 private:

  std::string valueType;

  void* value;

先声明变量value 接着就可以在初始化函数里完成一系列的逻辑了, 最后在PyList中一个一个的把用户传入的value赋值给PyType,然后储存到std::vector values;中 在校生本来时间也不充裕就讲到这吧,代码贴出来大家研究一下 #include #include #include #include class PyType { private:   std::string valueType;   void* value; public:   template   PyType(T __value__) {     valueType = typeid(__value__).name();     value = new T(__value__);   }   template   T getValue() {     return *static_cast(value);   }   std::string getType() {     return valueType;   } }; class PyList { private:   std::vector values; public:   PyList() {}   template   void append(T value) {     values.push_back(PyType(value));   }   template   T get(int index) {     return values[index].getValue();   }   std::string getType(int index){     return values[index].getType();   }   int getlength(){     return(values.size());   } }; int main() {   PyList mylist;   mylist.append(10);   mylist.append("Hello");   mylist.append(3.14);   mylist.append(" Hello World! ");   for(int i=0;i<100;i++){     mylist.append(i);   }   // std::cout << "Element at index 0: " << mylist.get(0) << std::endl;   // std::cout << "Element at index 1: " << mylist.get(1) << std::endl;   // std::cout << "Element at index 2: " << mylist.get(2) << std::endl;   for(int i=0;i(i);     }else if (typeofValue=="NSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE"){       std::cout<(i);     }else if (typeofValue=="d"){       std::cout<(i);     }     //添加换行符     std::cout<

Pylist的C++语言实现的评论 (共 条)

分享到微博请遵守国家法律