C++中的Java ArrayList

lea*_*ner 23 c++ java

在Java中,我可以做到

List<String> data = new ArrayList<String>();
data.add("my name");
Run Code Online (Sandbox Code Playgroud)

我如何在C++中做同样的事情?

Naw*_*waz 56

使用std::vectorstd::string:

#include <vector>  //for std::vector
#include <string>  //for std::string

std::vector<std::string> data;
data.push_back("my name");
Run Code Online (Sandbox Code Playgroud)

请注意,在C++中,new每次创建对象时都不需要使用.data通过调用默认构造函数来默认初始化该对象std::vector.所以上面的代码很好.

在C++中,moto是:尽可能避免new.

如果你已经知道编译时的大小并且数组不需要增长,那么你可以使用std::array:

#include <array> //for std::array

std::array<std::string, N> data; //N is compile-time constant
data[i] = "my name"; //for i >=0 and i < N
Run Code Online (Sandbox Code Playgroud)

阅读文档以获取更多详细信息:


C++标准库有许多容器.根据情况,您必须选择最适合您的目的.我不可能谈论它们中的每一个.但这里的图表有很多帮助(来源):

在此输入图像描述

  • @Sheeo:默认初始化,默认构造函数是自动调用的. (7认同)
  • @Sheeo:嗯?向量已初始化. (5认同)