在 C++检查 std::vector是否为包含一定的值

发布于 2024-11-14 17:29:17 字数 284 浏览 4 评论 0原文

是否有任何内置函数告诉我我的向量是否包含某个元素 例如

std::vector<string> v;
v.push_back("abc");
v.push_back("xyz");

if (v.contains("abc")) // I am looking for one such feature, is there any
                       // such function or i need to loop through whole vector?

Is there any built in function which tells me that my vector contains a certain element or not
e.g.

std::vector<string> v;
v.push_back("abc");
v.push_back("xyz");

if (v.contains("abc")) // I am looking for one such feature, is there any
                       // such function or i need to loop through whole vector?

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

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

发布评论

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

评论(5

烟沫凡尘 2024-11-21 17:29:18
  1. 如果您的容器仅包含唯一值,请考虑使用 std::set 相反。它允许以对数复杂度查询集合成员资格。

    <前> <代码> #include <设置>

    std::sets;
    插入(“abc”);
    插入(“xyz”);
    if (s.find("abc") != s.end()) { ...

  2. 如果您的向量保持排序,请使用 std::binary_search,它也提供对数复杂度。


  3. 如果所有其他方法都失败,请退回到 std::find,这是一个简单的线性搜索。


  1. If your container only contains unique values, consider using std::set instead. It allows querying of set membership with logarithmic complexity.

     #include <set>
    
     std::set<std::string> s;
     s.insert("abc");
     s.insert("xyz");
     if (s.find("abc") != s.end()) { ...
    
  2. If your vector is kept sorted, use std::binary_search, it offers logarithmic complexity as well.

  3. If all else fails, fall back to std::find, which is a simple linear search.

绿萝 2024-11-21 17:29:18

在 C++11 中,您可以使用 std::any_of 代替。

查找数组中是否有零的示例:

std::array<int,3> foo = {0,1,-1};
if ( std::any_of(foo.begin(), foo.end(), [](int i){return i==0;}) )
std::cout << "zero found...";

In C++11, you can use std::any_of instead.

An example to find if there is any zero in the array:

std::array<int,3> foo = {0,1,-1};
if ( std::any_of(foo.begin(), foo.end(), [](int i){return i==0;}) )
std::cout << "zero found...";
滥情空心 2024-11-21 17:29:18

它位于 中,名为 std::find

it's in <algorithm> and called std::find.

海风掠过北极光 2024-11-21 17:29:17

您可以使用 std::find 如下:

if (std::find(v.begin(), v.end(), "abc") != v.end())
{
  // Element in vector.
}

为了能够使用 std::findinclude

You can use std::find as follows:

if (std::find(v.begin(), v.end(), "abc") != v.end())
{
  // Element in vector.
}

To be able to use std::find: include <algorithm>.

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