簡體   English   中英

C++:我可以在另一個向量中定義向量嗎?

[英]C++: Can I define vector within another vector?

在 C/C++ 純數組中,您可以在另一個數組中定義一個數組,例如:

int a[5];
int *p = &a[1];

所以如果你改變p[0]它會影響a[1]等等。 向量中是否有類似的機制?

vector<int> a(5, 0);
?

你的第一個例子

int a[5];
int *p = &a[1];

沒有在另一個數組中定義一個數組,它只創建一個指向現有數組中元素的指針。 對於像std::vector這樣的標准容器,可以通過使用迭代器來實現相同的目標:

vector<int> a(5, 0);           // a = [0, 0, 0, 0, 0]
auto iterator = a.begin() + 1; // "points" to a[1]
*iterator = 2;                 // a = [0, 2, 0, 0, 0]

迭代器廣泛用於標准庫和提供對容器(子)范圍的訪問的首選解決方案。


如果您可以使用 C++20 或更高版本,則可能需要查看std::span

完全相同的代碼int *p = &a[1]; 如果a也是向量,則有效。

但是真的不推薦。 它甚至比使用數組更糟糕,因為向量可以重新分配,並且您的指針將失效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM