【问题标题】:Understanding find and vectors C++ [closed]了解查找和向量 C++ [关闭]
【发布时间】:2013-09-26 02:27:09
【问题描述】:

我正在尝试理解这行代码

vector<int>::iterator it = find(list_vector.begin(), list_vector.end(), 5)

我事先声明了vector&lt;int&gt; list_vector;

5 是做什么的?它返回什么?如果它可以在开头和结尾找到它,它会返回 5 吗?如果我想做一个 if 语句,并且我想查找数字 10 是否在语句中(如果是,则返回 true)我该怎么做?

【问题讨论】:

  • 我认为“RTFM”虽然看起来很刺耳,但却是这里唯一合适的答案......
  • "查找数字 10 是否在 [if] 语句中"?嗯?
  • 我为“RTFM”道歉。我尝试查找答案,但找不到任何东西。 if (vector::iterator it = find(plist.begin(), plist.end(), number) == number) 我似乎做不到,因为它给出了错误。有什么想法吗?
  • 迭代器模仿指针;您必须取消引用它才能取回号码。也就是说,当然,如果迭代器不是 plist.end()(等效于 NULL 的迭代器)。

标签: c++ vector find


【解决方案1】:
vector<int>::iterator it = find(list_vector.begin(), list_vector.end(), 5)

std::find 在其前两个参数定义的范围内搜索。它返回一个迭代器,指向匹配的第一个元素。如果没有元素匹配,则返回其第二个参数。

list_vector.begin() 返回一个指向list_vector 的第一个元素的迭代器。

list_vector.end() 返回一个迭代器,它指向list_vector 的最后一个元素之外的一个元素。

5 是搜索的目标。 find() 将查找值为 5 的元素。

如果您想确定向量中的任何位置是否存在 10,请执行以下操作:

if(std::find(list_vector.begin(), list_vector.end(), 10) == list_vector.end())
    std::cout << "No 10, bummer\n";
else
    std::cout << "I found a 10!\n";

或者,如果您想同时确定 10 是否存在确定其位置:

std::vector<int>::iterator it = std::find(list_vector.begin(), list_vector.end(), 10);
if(it == list_vector.end())
    std::cout << "No 10\n";
else
    std::cout << "Look what I found: " << *it << "\n";

【讨论】:

  • 第一个会从头到尾搜索10,怎么在做的时候==不能设置成10、5,或者只是一些int变量我让用户输入?当我尝试时,它给了我错误。例如 find(list_vector.begin(), list_vector.end(), 10) == number)
  • @JakeSmith, std::find 返回一个迭代器,而不是第三个参数的任何类型。
  • 如何使用 find 找到下一个匹配项
  • @MuhammadUmer - iterator it = std::find(v.begin(), v.end(), 10); std::cout &lt;&lt; "First find: " &lt;&lt; *it &lt;&lt; "\n"; it = std::find(it, v.end(), 10); std::cout &lt;&lt; "Second find: " &lt;&lt; *it &lt;&lt; "\n";
  • 哈哈,这很简单,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-23
  • 1970-01-01
  • 1970-01-01
  • 2012-03-04
  • 1970-01-01
相关资源
最近更新 更多