C++中的动态数组

Dynamics Array in C++

本文关键字:数组 动态 C++      更新时间:2023-10-16
int len;
cin>>len;
string *test = new string[len];

这段代码工作正常,但我想知道如何分配动态内存,而不必在 Python 中指定数组的长度,例如 list.有什么解决方案可以做到这一点吗?

C++等效的是std::vector模板,它实现了一个动态数组:

#include <vector>
int main()
{
    std::vector<int> v;
    assert( v.size() == 0 );
    v.push_back( 1 );
    v.push_back( 2 );
    v.push_back( 3 );
    assert( v.size() == 3 );
    for( std::size_t i = 0 i < v.size() ; ++i )
        std::cout << v[i] << std::endl;
}


1 阿拉伯数字
3

std::vector具有许多优点:

  • 避免由程序员手动管理动态数组的内存。我认为这是最重要的。
  • 与其他标准库容器一样,具有许多功能(包括电池:P),并且通过迭代器指定使用标准库算法。
  • 的效率:作为一个动态数组,向量的数据是连续存储的,所以它是一个非常好的缓存友好容器,在大多数情况下,由于其缓存局部性,它的性能远远优于链表(std::list)。
您可以使用

std::vectorstd::list(或其他一些适当的stl容器)来处理您的内存分配。