你能告诉我 C++ 中最接近 python 列表的数据类型是什么吗?如果没有类似的东西,你将如何用 C++ 构建它?
原文由 gen 发布,翻译遵循 CC BY-SA 4.0 许可协议
也许将 boost::any 存储在 std::vector 中? http://www.boost.org/doc/libs/1_54_0/doc/html/boost/any.html
这是一个简单的工作示例。请参阅下面的詹姆斯评论。
#include "../boost_1_54_0/boost/any.hpp"
#include <vector>
#include <string>
#include <iostream>
int main()
{
std::vector<boost::any> myList;
myList.push_back(std::string("Hello"));
myList.push_back(10);
myList.push_back(std::string("World"));
std::string any1 = boost::any_cast<std::string> (myList[0]);
int any2 = boost::any_cast<int> (myList[1]);
std::string any3 = boost::any_cast<std::string> (myList[2]);
std::cout<<any1<<" "<<any2<<" "<<any3<<std::endl;
return 0;
}
原文由 Korchkidu 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答4.9k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答840 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
如果您正在寻找 C++ 惯用的标准一维数据结构,
std::vector
s、std::list
s 和 数组(或std::array
s)类似于 Python 列表。您要选择哪种数据结构取决于您的要求。std::vector
是一个非常合理的结构,如果您只是想存储一组项目,则默认使用该结构。这些数据结构都要求每个元素的类型相同。通常在 C++ 中,这就是你想要的。但是,如果您特别希望在同一结构中存储多种类型,则有以下几种选择:
void
指针。但是,您将需要一些方法来确定每个元素的类型并将指针转换为适当的类型以使用每个元素。union
(您通常将其包装在struct
以及enum
指示正在存储的类型)。