当前位置: 首页 > news >正文

C++ 实现Python 列表list 的两种方法

1、vector里面放多种参数。在C++中,如果你想要在std::vector中存储不同类型的参数,你可以使用std::any(C++17及以上)或std::variant(C++17以前的版本需要使用Boost库或者C++17及以上标准)。以下是使用std::vector<std::any>的例子:

#include <iostream>
#include <vector>
#include <any>int main() {std::vector<std::any> vec;vec.push_back(42);vec.push_back("hello");vec.push_back(3.14);for (const auto& item : vec) {if (item.type() == typeid(int)) {std::cout << std::any_cast<int>(item) << std::endl;}else if (item.type() == typeid(const char*)) {std::cout << std::any_cast<const char*>(item) << std::endl;}else if (item.type() == typeid(double)) {std::cout << std::any_cast<double>(item) << std::endl;}}return 0;
}

2、接下来的代码使用C++11标准 

#include <iostream>
#include <vector>
#include <typeinfo>
#include <string>class PyType {
private:std::string valueType;void* value;public:template <typename T>PyType(T __value__) {valueType = typeid(__value__).name();value = new T(__value__);}template <typename T>T getValue() {return *static_cast<T*>(value);}std::string getType() {return valueType;}
};class PyList {
private:std::vector<PyType> values;public:PyList() {}//void init(auto initvalues, ...) {////}template <typename T>void append(T value) {values.push_back(PyType(value));}template <typename T>T get(int index) {return values[index].getValue<T>();}std::string getType(int index) {return values[index].getType();}int getlength() {return(values.size());}
};int main() {PyList mylist;mylist.append<int>(10);mylist.append<std::string>("Hello");mylist.append<double>(3.14);mylist.append<std::string>(" Hello World! ");for (int i = 0; i < 100; i++) {mylist.append<int>(i);}// std::cout << "Element at index 0: " << mylist.get<int>(0) << std::endl;// std::cout << "Element at index 1: " << mylist.get<std::string>(1) << std::endl;// std::cout << "Element at index 2: " << mylist.get<double>(2) << std::endl;for (int i = 0; i < mylist.getlength(); i++) {//判断类型并且将类型与内容打印在屏幕上std::string typeofValue = mylist.getType(i);std::cout << "type of index[" << i << "]" << " is " << typeofValue << " value is ";if (typeofValue == "int") {std::cout << mylist.get<int>(i);}else if (typeofValue == "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >") {std::cout << mylist.get<std::string>(i);}else if (typeofValue == "double") {std::cout << mylist.get<double>(i);}//添加换行符std::cout << std::endl;}return 0;
} 

http://www.lryc.cn/news/365731.html

相关文章:

  • vue3+ elementPlus PC端开发 遇到页面已进入就form校验了的问题
  • transformers DataCollator介绍
  • rust学习(字节数组转string)
  • Docker:技术架构演进
  • 汽车MCU虚拟化--对中断虚拟化的思考(2)
  • python的继承
  • 组件的注册和引用
  • 诊所如何赢得患者?做好这两点很关键!
  • Qwen2本地部署的实战教程
  • html+CSS+js部分基础运用15
  • 从零开始学JAVA
  • MySQL(四)查询
  • 嵌入式学习——网络编程(TCP)——day31
  • [STM32]定位器与PWM的LED控制
  • 可视化数据科学平台在信贷领域应用系列五:零代码可视化建模
  • Windows 11广告植入“另辟蹊径”:PC Manager暗示若不使用必应搜索,你的系统可能需要“修复”
  • 一线教师教学工具汇总
  • 【数据结构】栈和队列-->理解和实现(赋源码)
  • 一篇教会你CSS定位
  • Hive的常规操作
  • redis做为缓存,mysql的数据如何与redis进行同步呢?
  • 【Map】集合总结
  • SpringBoot实现发送邮件功能
  • 外观数列 ---- 模拟
  • 上心师傅的思路分享(二)
  • 116页 | 2024年中国金融行业网络安全研究报告(免费下载)
  • 基于fabric封装一个简单的图片编辑器(vue 篇)
  • Linux中 .PHONY 和 all 在 Makefile 中的作用
  • Flutter 中的 FlexibleSpaceBar 小部件:全面指南
  • 每天一个数据分析题(三百五十四)-分析报表