簡體   English   中英

C ++:最快將矢量文件寫入C或C ++中的普通文本模式(非二進制)輸出

[英]C++: fastest to write vector file to output in normal text mode (not binary) in C or C++

std::vector (或任何連續的容器)寫入非二進制文件(即文本模式)的最快方法是什么? 就我而言,速度很重要,矢量不斷產生並寫入文件。

在二進制模式下,它是相當直接的,因為std::vector在內存中是連續的。 注意我不想依賴Boost序列化。 (雖然我可能被迫以最優雅的方式......)。 我還需要一系列字符來分隔元素(即空格)

這就是我現在正在做的事情(就是一個例子),但即使我為一個vector寫了一個運算符<< ,這也是非常通用的。 是否有更優化的此代碼版本,還是我留下了這個?

std::ofstream output(...);
...
template <typename T>
write_vec_to_file (const &std::vector<T> v)
{
    for (auto i: v)
        output << i << " ";
    output << "\n";
}

作為一個附帶問題,如果一個人繼續調用std::cout << ...是否只是開始std::cout的開銷? 我的猜測顯然是肯定的

例如,您可以使用std::copy

std::vector<int> v = { 1, 2, 3, 4, 5 };
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM