簡體   English   中英

檢查c ++ STL向量中是否存在特定元素

[英]checking whether a particular element exists or not in a c++ STL vector

我想檢查一個元素是否存在於特定的向量位置,比如i,然后像v [i]一樣訪問它。 你能讓我知道我該怎么辦?

謝謝。

if (0 <= i  &&  i < v.size()) {
  // OK
  std::cout << v[i]; // Example
} else {
  // Wrong
}

保證元素存在於每個位置i ,其中i >= 0並且i < v.size()因為向量是連續的元素序列,並且“孔”是不可能的。

使用v.size()

如果您想知道向量中是否存在元素,則最快的方法是對數組進行排序,然后使用搜索方法(如二進制搜索)。

如果多次執行此操作,則更改數據結構可能會產生更好的性能。 std :: map對此很好,如果您的編譯器有一個,請使用哈希表或映射。

否則,在不訪問向量的情況下確定向量中是否存在值的唯一方法是使用第二個數據結構來記住值和位置。

我知道你有一個在特定維度預分配的std::vector ,比方說n ,你想看看索引ii < n )的元素是初始化還是剛剛分配。

就像@Thomas Matthews所說,你可以使用第二個數據結構,一個簡單的bool[n] ,其中,在索引k ,如果vector中索引為k的元素存在則存儲為true否則為false

      0 1 2 3 4 5
v = [ *   *   * * ]

             0     1      2     3     4     5
exists = [ true, false, true, false, true, true ]

暫無
暫無

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

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