我想從具有以下屬性的方法返回std::vector
:接收者(用戶)將能夠編輯向量中的元素,但不會更改向量本身(調整大小,刪除,加等)C++ STL向量半常數
- 如果我返回
std::vector<T>&
,接收器將能夠調整其大小,添加元素吧,等 - 如果我返回
std::vector<T> const&
(沒有我宣佈,對吧?),他們將無法改變這些元素。 - 如果我返回
std::vector<T>
,它將是一個全新的向量,並且對元素的更改不會在原始向量中。
有沒有辦法做到這一點?也許是引用的vetor,返回爲const(std::vector<T&> const
)?有沒有這樣的事情?如果有的話,它是否可以將我的std::vector<T>
隱式轉換成它?
'std :: pair'? –
avakar
IMO它會更好的設計給你的類(例如)一個函數'T&at(size_t idx)',它一次只返回一個元素的引用。或者可能是'begin()'和'end()'函數返回迭代器。你想要做的是將'std :: vector'的接口包含到你的類的接口中,這個接口將你的類與一個特定的實現細節聯繫起來(它把它的數據存儲在一個'vector'中,而不是' deque「或」set「或其他)。 –
@SteveJessop這很好,和'vector'一樣不會隱藏它是一個向量;)我正在嘗試創建一個類似於向量的二維數組類。各種方法將返回一個「行」,它實際上是內部「平面」向量的一部分。我想如果我需要我可以有一個'it rowBegin(i)'和'it rowEnd(i)',但我還想要一個'vector row(i)'方法。 – baruch