2016-08-04 72 views
0

我記得C++ primer說過,2D矢量效率非常低,應該避免。 但是2d數組在創建和刪除方面似乎相當不方便。二維數組,2維矢量,哪個效率更高?

有沒有其他方法可以做到這一點?或2D矢量仍然可以對抗2D陣列?

+2

如果您正在專門討論C++,那麼您應該用C++標記標記您的問題。此外,我會建議更具體地說明你打算如何使用它們,以及你對「低效率」的定義是什麼,它似乎是一個非常廣泛的問題,因爲它的立場 – musefan

+0

@musefan是的,我正在說abt C++,遺憾的是缺少的水龍頭,我忘了它。 –

回答

1

我懷疑它的問題。還有其他因素會更重要。

我會質疑起始前提:

2D矢量是低效

有時候我們權衡純粹的速度爲更好的抽象。我敢打賭,與原始字節或字符數組相比,std::string類可能被某些度量方法視爲效率低下,但我仍然會使用它。

如果您不再擔心廣泛的陳述並關注您的用例,那麼您將擁有更好的案例。

我知道2D數組最常見的應用是矢量,矩陣和線性代數。對於這個問題還有其他因素比選擇底層數據結構要重要得多。

由於C++是一種面向對象的語言,您可以通過從接口開始並創建使用向量和數組的實現來輕鬆解決此問題。根據有意義的數據集和度量來測試它們。

+0

感謝您的回覆。實際上我正在測試一些矩陣算法。對於我的個人測試,速度並不重要。但我只是想知道,如果有一天我確實需要在一個更好的大項目中做同樣的事情。比如說,簡單的矩陣乘法。 –

+0

你應該更多地關心稀疏性,並行化和正確的抽象。少於矢量和數組之間的數據選擇。您是否完成了購買與構建分析?你爲什麼要編寫自己的線性代數庫? – duffymo

+0

嗨,我正在讀一本關於算法的書,我想測試一些僞代碼。在我的工作中,我沒有遇到類似的問題,但正如我剛纔所說的,只是想知道如果我使用2d數組實現它,如果變量大小增加,它是否會顯着昂貴。 –