2017-02-28 99 views
4

對於某些類型的T,請考慮std::vector<T>。我收到一個指向這種類型的指針到一個函數中,還有一個T的實例; t說。將矢量分配給單個元素

我的功能看起來是這樣的:

void bar(std::vector<T>* foo, const T& t) 
{ 
    foo->clear(); 
    foo->push_back(t); 
} 

有沒有辦法我寫的函數體中的一個聲明?由於不存在適當的賦值運算符,因此*foo = t;不起作用。我也想用

foo->assign(&t, &t + 1); 

但這似乎是淘氣。

我正在使用C++ 11。

回答

10

當然,你可以重新分配:

*foo = {t}; 
+0

這是超級酷。謝謝! –

+1

分配版本可能會更好,它可能會重用先前向量的內存,而不是重新分配一個tho。 – galop1n

+0

僅供參考,'= {t}'語法僅適用於C++ 11及更高版本。對於較早的版本,可以使用'* foo = vector (1,t);'而不是'foo-> assign(1,t)'更好。 –

4

是否有一個原因,你不能只使用std::vector<>其他assign()成員函數?

void bar(std::vector<T>* foo, const T& t) 
{ 
    foo->assign(1, t); 
}