問題很簡單:在字串緩沖區中找到空終止符 ( '\0' ) 位置的最快方法是什么?
std::array<char, 100> str { "A sample string literal" };
我想一種選擇是使用std::strlen.
我能想到的另一個選擇是std::find甚至可能是std::ranges::find:
const auto posOfNull { std::find( str.cbegin( ), str.cend( ), '\0' ) };
現在,如果將ExecutionPolicy(例如std::execution::par)作為第一個引數傳遞給它會有所不同嗎?如果可以,那么哪種政策適合這種特殊情況?
或者也許是我不知道的第三種選擇?
uj5u.com熱心網友回復:
在字串緩沖區中查找空終止符 ('\0') 位置的最快方法是什么?
我將假設您的意思是“找到第一個空終止符”。
最快取決于細節。你必須測量才能發現。std::strlen是一個相當安全的默認選擇。
現在,如果 ExecutionPolicy(例如 std::execution::par
緩沖區的長度為 100。多執行緒的開銷可能很容易超過在單個執行緒中找到終止符的時間。
如果可以,那么哪種政策適合這種特殊情況?
您測量為最快的那個。它們都不會破壞回圈的正確性。
或者也許是我不知道的第三種選擇?
您可以使用std::char_traits::length. 它的好處std::strlen是它適用于所有字符型別(與僅 相比char),它constexpr允許在常量運算式中使用它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/468106.html
上一篇:字符陣列到字串并復制字符\0
