簡體   English   中英

如何檢查給定索引處的`std::vector`中是否存在**任何**元素

[英]How to check if **any** element exists in an `std::vector` at a given index

我有一個像這樣的std::vector

std::vector<std::pair<T,T>> xyz xyz的長度為 10 ,另一個 function 恰好用std::pair<T,T>填充 3 個點,例如 4、6 和 8。 在遍歷向量時,我想知道非空點在哪里,以便我可以進一步使用std::pair<T,T> s。

我想我可以使用c++17std::optional<>但我正在使用c++14 有什么方法可以找出在 c++14 中不為空的std::vector中的點。

從 function 分配后,向量看起來像這樣

index  value
 0:
 1:
 2:
 3:
 4:    <7,8>
 5:
 6:    <9,2>
 7:
 8:    <8,6>
 9:

我想遍歷上面的向量,只說打印std::pairs

如果你不對你的數據結構做一些工作,你就不能這樣做,因為向量中的每個元素都被初始化了。

我認為最簡單和最快的方法是存儲一個相同大小的std::vector<bool>來存儲一個元素是否不僅被初始化,而且稍后也被“修改”。

如果您擔心可能忘記設置另一個向量,請將它們綁定在一起:

std::vector<std::pair<std::pair<int, int>, bool>> a;

如果你仍然覺得這太難看,你可能不得不實現自己的簡單optional

暫無
暫無

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

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