如果函數採用參數vector<int>&
,那究竟是什麼意思?這與說出矢量中包含的指針的值是否相同?我完全理解vector<int&>
;只是一些關於外面的&
讓我感動。什麼是矢量引用?
什麼是矢量引用?
回答
沒有&
矢量的副本將被傳遞給函數。
=所有元素的副本。更改/插入/刪除...不會影響原始矢量。
(如果你有一個指針向量或類似的東西,它們仍然指向相同的東西,但指針本身也被複制)。
使用&
您將在該函數中具有相同的矢量,並且所有的修改都將在外部可見。此外,如果它不是非必要的(可能是因爲整個移動語義& co。topic),它可能會更快地不復制所有內容。
它是一個參考,其中被引用的對象的類型爲vector<int>
。
除了類型之外,這與任何其他參考都是一樣的。如果你不熟悉引用,它們是同一個變量提供多個標籤的方式:
int a = 5;
int &b = a;
// now "a" and "b" are both labels for the same variable. any
// expression involving `a` can have that exchanged for `b`
// without making any difference.
a = 6;
std::cout << b << std::endl; // 6
在這種情況下,你都在談論:
void func(vector<int> &b) { b.push_back(6); }
int main()
{
vector<int> a;
func(a);
std::cout << a[0] << std::endl; // 6
}
這意味着再次a
和b
是兩個標籤都是同一個矢量。
我完全理解
vector<int&>
vector<int&>
是非法的,所以希望你的「完全理解」的是,它是非法的。不可能擁有引用的數組或容器。
vector<int>&
是一個向量的引用,vector<int&>
是INT參考矢量,事實上vector<int&>
將簡單地不進行編譯,更詳細地: Why can't I make a vector of references?
甚至沒有鏈接從堆棧溢出本身? –
好的...對不起,忘記我說的:) – deviantfan
當一個函數接受「載體&」,它被說成是通過參考傳遞。假設你的矢量參考參數被命名爲vec。我們假設你想給你的int向量中的所有元素賦0。您可以鍵入:
int assign_zero(vector<int> vec){
for(auto &x : vec){
x = 0;
}
}
有了這個,你可以在你的主要方法類型的東西像這樣:
originalVector = assign_zero(originalVector);
你也可以在你的函數中使用到的矢量的參考做到相同的事情(注意函數現在無效):
void assign_zero(vector<int>& vec){
for(auto &x : vec){
x = 0;
}
}
現在,而不是在存儲器中從originalVector創建零的新載體中,然後分配回originalVector,函數assign_zero()米直接減少矢量。這使您可以使用一個函數調用像這樣沒有創建額外的向量,其中:
assign_zero(originalVector);
注意與矢量參考的功能並不需要是無效的。
- 1. 什麼是矢量?
- 2. 什麼是圖像矢量?
- 3. 什麼是RHS矢量
- 4. 什麼是矢量圖?
- 5. 什麼是位矢量?
- 6. 矢量矢量有什麼問題?
- 7. 什麼是矢量長度和矢量緩存大小?
- 8. 什麼是矢量和矢量<>之間的differenece
- 9. 什麼是unity4的矢量engin
- 10. numpy的矢量化是做什麼的?
- 11. 爲什麼我的矢量是空的?
- 12. KDB/Q:什麼是矢量操作?
- 13. 爲什麼對象是矢量?
- 14. 矢量化的限制是什麼?
- 15. 什麼是矢量數據結構
- 16. 什麼是glsl中的半光矢量?
- 17. 稀疏矢量,它們是什麼?
- 18. 矢量引用類
- 19. 什麼是常量引用? (不是對常量的引用)
- 20. 爲什麼矢量的矢量不能保證是連續的? (或者是嗎?)
- 21. 爲什麼矢量<bool> ::引用不返回對bool的引用?
- 22. C++:我用的是什麼錯誤使用STL矢量
- 23. 矢量包含引用
- 24. 什麼是使矢量垂直於另一個矢量的公式?
- 25. 爲什麼盒裝矢量這麼慢?
- 26. 爲什麼矢量這麼淺?
- 27. 二維矢量和矢量地圖有什麼區別?
- 28. 這個C矢量爲什麼不循環自動矢量化?
- 29. uintmax_t矢量索引
- 30. 用矢量乘數據幀的正確方法是什麼?
會有幫助:[The Definitive C++ Book Guide and List](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list),[指針之間有什麼區別C++中的變量和引用變量?](http://stackoverflow.com/questions/57483/what-are-the-differences-between-pointer-variable-and-reference-variable-in-c?rq=1) – Drop
那很有意思。我是相反的,因爲你我因爲我明白'矢量&'但不明白'矢量' –
texasbruce