2016-08-03 25 views
0

如何進行默認的構造,所述拷貝構造移動構造函數相互比較爲骨料類型等std::array其存儲的速度內置在類型元素?C++ 11骨料和構造速度對比

直覺上,我會說移動>默認>複製(越快越快)。

這是正確的嗎?

+0

它取決於存儲在'array'中的元素的類型。可以是move = default = copy,或move = copy>默認或任意組合。 – user975989

+0

你說得對。我其實正在考慮內置類型。我正在糾正這個問題。 – Corvinus

+0

Well move =爲內建拷貝,所以拷貝/移動與memcpy相同,默認是memset等效(可能是SIMD等)。沒關係我說謊,默認不是memset它只是未初始化。 – user975989

回答

1

默認構造一個std::array拿着內置(如floatint等)將是最快的,其次是移動副本(這將是等效快)。

std::array是一個集合,所以默認構造函數不會做任何事情。作爲cppreference

注意,默認初始化可能導致非T類不定值

注意,因爲這些是內置插件,移動和複製是完全一樣的性能明智的,因爲說您無法以比複製內容更快的速度移動內置內容。

所以對於一個std::array,排序是默認>移動 == 副本

這不一定適用於包含非內置插件的聚合,但適用於僅包含內置插件或僅包含內置插件的其他聚合的聚合。