Python列表相当于C++?

gen*_*gen 7 c++ python list

能告诉我C++到python列表中最接近的数据类型是什么?如果没有类似的东西,你会如何在C++中构建它?

Eri*_*inn 10

std::vectors,std::lists和数组(或std::arrays)都具有类似于Python列表的功能.您要选择哪种数据结构取决于您的要求.

  • Python 列表可以存储不同类型的元素。http://docs.python.org/release/1.5.1p1/tut/lists.html (2认同)
  • @Korchkidu是的,但这不是提问者特别要求的.在C++中这样做,特别是作为初学者,正在寻找麻烦.除非gen编辑说他们专门要求存储任何类型的东西,否则我将把这个问题解释为要求随机访问的一维数据结构. (2认同)
  • @EricFinn 他没有特别要求任何东西。据推测,他知道 `std::vector`(谁不知道),但这还不够接近。为什么它不够接近是另一个问题/ (2认同)

Kor*_*idu 6

也许在一个std :: vector中存储boost :: any? 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;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

实际上没有一个 C++ 容器等同于 Python 的列表,这部分是 C++ 和 Python 的对象模型非常不同的结果。特别是,建议和赞成的 std::list 恕我直言甚至不接近 Python 的列表类型,我宁愿建议 std::vector 或 std::deque。也就是说,目前尚不清楚您想要的究竟是什么以及如何“构建它”在很大程度上取决于“它”究竟是什么,即您对容器的期望。

我建议您查看 C++ 容器 std::vector、std::deque 和 std::list 以获得概述。然后看看像 Boost.Any 和 Boost.Variant 之类的东西,你可以把它们结合起来,也许也是智能指针和 Boost.Optional 之一。最后,查看 Boost.Container 和 Boost.Intrusive。如果这些不太可能提供合适的近似值,您需要更好地解释您的实际目标是什么。