我是否認爲這個無辜的代碼相當危險?插入向量
template<typename T>
void insertLast(std::vector<T>& v)
{
if(v.empty()) return;
v.insert(v.begin(), v.back());
}
讀一些答案後,一些澄清..
好吧,我不是真的問如何插入元素爲載體,但我做了一個假的情況下審訊的原則。在換句話說你認爲有必要進行復制(這裏暫時被創建..和const引用到一個臨時被保證住):
template<typename T>
void insertLast(std::vector<T>& v)
{
if(v.empty()) return;
v.insert(v.begin(), T(v.back()));
}
它不會編譯,因爲你不能在'const'引用上調用'insert'。那是你認爲危險的嗎? –
它也需要'typename T'來編譯。 – Benj
你是不是會把'back'和'end'混淆?它是一個簡單的錯誤,但完全改變了代碼的含義 – jozefg