对于std字符串数组,哪种数据结构更好

m.r*_*226 4 c++ string queue data-structures

我需要一个如下结构:

图1

该结构必须保持固定大小std::strings,以使其元素的数量为finit(100-10000000).

我希望能够随机访问每个元素,如下所示:

std::string Temp = MyStrcuture[i];
Run Code Online (Sandbox Code Playgroud)

要么

MyStrcuture[i] = std::string Temp;
Run Code Online (Sandbox Code Playgroud)

我必须选择没有(可能)内存泄漏的最快结构.

哪一个对我更好?

  1. std::string* MyStrcuture = new std::string[Nu_of_Elements];
  2. std::queue< std:string> MyStrcuture(Nu_of_Elements);
  3. std::vector< std:string> MyStrcuture(Nu_of_Elements);
  4. boost::circular_buffer< std::string> MyStrcuture(Nu_of_Elements);
  5. 你的建议?

Sau*_*ahu 12

std::vector< std:string> MyStrcuture(Nu_of_Elements);
Run Code Online (Sandbox Code Playgroud)

矢量最适合您的要求.它支持基于索引的元素访问,因为元素存储在连续的内存地址中,并且具有大小的灵活性.


  1. std:string*MyStrcuture = new std :: string [Nu_of_Elements]; 没有

    C++ STL向量与现实世界中的数组

  2. std :: queue <std:string> MyStrcuture(Nu_of_Elements); 没有

    如何在java中获取队列中的第n个项目?
    不支持基于索引的元素访问.

  3. std :: vector <std:string> MyStrcuture(Nu_of_Elements);

    清理:向量的析构函数自动调用向量中每个元素的析构函数.

  4. Boost :: circular_buffer <std :: string> MyStrcuture(Nu_of_Elements); 没有

    与第二个相同的原因.了解更多

  • 而不是`std :: vector <std :: string>`,`std :: vector <std :: array <char,401 >>`从内存的角度来看更有意义. (2认同)