vector <string>可以保存多少数据?

时间:2016-01-11 16:05:14

标签: c++ csv memory vector

我有一个程序通过从两个单独的.csv文件中获取数据来生成.csv文件。

我使用vector<string>来保存每个csv文件中的数据,然后我的程序根据特定条件进行数据排序,从而生成输出。我担心我的程序可能会耗尽内存。

vector<string>一次可以容纳多少数据?它是系统/处理器/操作系统特定的吗?

2 个答案:

答案 0 :(得分:1)

您可以使用非常大的vector<T>::max_size()进行检查,here您可以在运行此示例的系统上阅读其1073741823。但是我想你对真实世界的场景更感兴趣 - 在你的进程堆上没有可用的连续内存块时,你会得到bad_alloc异常。一种解决方案可能是使用std::deque - 它将以块的形式进行分配。

答案 1 :(得分:0)

是的,它是系统/处理器/操作系统特定的。

对于32位程序,可能限制为2GB(如果您有任何其他数据,则会更少)。 64位程序可能会受到可用交换空间的限制(因此几GB)。

嵌入式系统将提供更少(可能非常少)。

但是几十或几百MB应该没有问题。