检查 c++ 中是否存在特定元素; STL矢量

发布于 2024-08-14 22:43:59 字数 74 浏览 5 评论 0原文

我想在像 v[i] 一样访问某个元素之前检查它是否存在于特定的向量位置(例如 i)。你能让我知道我该怎么做吗?

谢谢。

I wanted to check whether an element exist at a particular vector location, say i, before accessing it like v[i]. Could you let me know how can I do that?

Thank you.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

自演自醉 2024-08-21 22:43:59
if (0 <= i  &&  i < v.size()) {
  // OK
  std::cout << v[i]; // Example
} else {
  // Wrong
}
if (0 <= i  &&  i < v.size()) {
  // OK
  std::cout << v[i]; // Example
} else {
  // Wrong
}
蓝咒 2024-08-21 22:43:59

保证元素存在于每个 i 位置,其中 i >= 0i v.size() 因为向量是连续的元素序列,并且不可能出现“空洞”。

An element is guaranteed to exist at every position i where i >= 0 and i < v.size() as vectors are contiguous sequences of elements and "holes" are not possible.

划一舟意中人 2024-08-21 22:43:59

使用v.size()

Use v.size().

玩套路吗 2024-08-21 22:43:59

如果想知道向量中是否存在某个元素,最快的方法是对数组进行排序,然后使用搜索方法(例如二分搜索)。

如果多次执行此操作,更改数据结构也许会产生更好的性能。 std::map 对此很有用,如果您的编译器有,请使用哈希表或映射。

否则,在不访问向量的情况下确定向量中是否存在值的唯一方法是使用第二个数据结构来记住该值和位置。

If you want to know if an element exists in a vector, the quickest method is to sort the array then use a search method such as binary search.

If this action is performed many times, perhaps changing the data structure will yield better performance. An std::map is good for this, and if your compiler has one, use a hash table or map.

Otherwise the only way to determine if a value exists in an vector without accessing the vector is to use a second data structure to remember the value and position.

╄→承喏 2024-08-21 22:43:59

我了解您在特定维度(例如 n)预分配了一个 std::vector,并且您想查看索引处的元素是否 i > (i < n) 已初始化或刚刚分配。

就像 @Thomas Matthews 所说,您可以使用第二种数据结构,一个简单的 bool[n],其中在索引 k 处存储 true 如果 vector 中索引 k 处的元素存在,否则 false

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

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

I understand you have a std::vector preallocated at a specific dimension, let's say n, and you want to see if the element at index i (i < n) was initialized or is just allocated.

Like @Thomas Matthews said, you can use a second data structure, a simple bool[n], in which, at index k, you store true if the element at index k in your vector exists and false otherwise.

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

             0     1      2     3     4     5
exists = [ true, false, true, false, true, true ]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文