0
說下面的代碼是爲了相同的目的而編寫的。程序的其餘代碼是相同的。
代碼1
使用C++模板的程序編譯過程
#include <vector>
using namespace std;
vector<int> vector1;
vector<int> vector2;
vector<int> vector3;
vector<int> vector4;
碼2
#include <vector>
using namespace std;
vector<int> vector1;
vector<short> vector2;
vector<char> vector3;
vector<bool> vector4;
現在哪一個更好(在可執行文件的大小方面讓)? (提示:考慮可執行文件)
我比較了由g ++ -S給出的彙編結果。
令人驚訝的是第二個程序的行數是1778,第一個是630.這意味着第一個更好。
爲了解釋這種行爲,我尋找了一個「基於模板的程序如何編譯」的好資源,但找不到一個。
使用模板的程序如何被編譯器編譯到程序集中?你有很好的資源嗎? (這不是一門功課,但在我workplace.Should給予自學問題,你覺得不給至少直接我一個很好的資源答案)
定義「更好」:兩段代碼不等價。 – Mat
如果出現以下情況,我們如何挑選更好的人?#1我們實際上沒有一個目標; #2例子沒有產生有趣的結果; #3的例子*做不同的事情*。更好的人可能是做你想做的事的人,因爲......呃,因爲它做你想做的事。 –
編輯了這個問題。其實我的主要問題是這種行爲的原因。 – Dinushan