如果我在另一個類中有一個類中的對象向量,我會嘗試並通過引用傳遞所有信息。通過引用傳遞向量
儘管我需要通過參考,但究竟是什麼?矢量?對象?都?
基本上我問的是:這些有什麼區別?我不確定如何引用像容器數組的工作。這些是合法的嗎?
如果我在另一個類中有一個類中的對象向量,我會嘗試並通過引用傳遞所有信息。通過引用傳遞向量
儘管我需要通過參考,但究竟是什麼?矢量?對象?都?
基本上我問的是:這些有什麼區別?我不確定如何引用像容器數組的工作。這些是合法的嗎?
vector&<object>
是一個語法錯誤。 vector<object&>
無效,因爲矢量的值類型必須是可賦值的。 vector&<object&> blah
是一個語法錯誤。
對矢量的引用是vector<T>&
。
好吧,所以你只需存儲一個向量的引用...當通過索引訪問所述向量的元素時,你實際上正在訪問原始對象? – SirYakalot
你不能有一個引用向量。向量元素必須是可複製和可賦值的,哪些引用不是。所以只有第一個選項實際上是一個選項,但拼寫爲std::vector<Object> &
。
請注意,v[1]
已返回參考到第二個元素,因此您可以愉快地通過引用傳遞各個元素。
可能有一個引用包裝的向量a la std::ref
,但是如果你不知道那是什麼,那麼在這一點上你可能不應該使用它。
另一種選擇是傳遞iterators而不是容器。這是standard library在<algorithm>
中採用的方法。它們在調用站點稍微更加冗長,但是它們的優點是它們可以用於集合的某些部分以及完整的集合,並將該算法從容器中分離出來。
最後,當然,檢查你知道你的algorithms是值得的,因爲可能已經有你想要的東西了。
你需要改變什麼?如果您需要更改一個對象,則通過引用來傳遞它。如果您需要更改容器(例如添加或刪除對象),則傳遞容器。 – Vlad
並且該參考被正確地寫成'vector
我會推薦[一本很好的C++入門書](http://stackoverflow.com/q/388242/46642)。 –