【问题标题】:STL algorithm function templatesSTL算法函数模板
【发布时间】:2012-04-14 23:06:27
【问题描述】:

程序必须在有序数组中找到一个元素并实现这个函数模板:

bool find(T *p, T value, int &index=null)

我已经完成了一个部分,但是当我尝试执行 Null 部分时,我的所有数字都归零。另外我不知道如何实现索引。谁能帮帮我。

int main()
{
    vector<int> numbers;
    vector<int>::iterator iter;

    for (int x = 0; x < 15; x++)
        numbers.push_back(x);

    cout << "The numbers in the vector are:\n";
    for (iter = numbers.begin(); iter != numbers.end(); iter++)
        cout << *iter << " ";
    cout << endl << endl;

    iter = find(numbers.begin(), numbers.end(), 5);
    cout << *iter << endl;

【问题讨论】:

  • 你不能有一个空引用。如果您需要类似的东西,请使用指针。
  • 您的函数模板仅提供一个指针,并没有指示该地址有多少元素。这将如何运作?
  • 使用内置的lower_bound()算法即可。
  • 使用C++时不要使用null;使用 0。这不是解决方案,只是一个建议。

标签: c++ stl


【解决方案1】:

原型是

bool find(T *p, T value, int &index=null). 

函数调用是

iter = find(numbers.begin(), numbers.end(), 5);

从概念上讲,这些匹配吗? end() 是否返回值? 5 是索引吗?

【讨论】:

  • 此外,您不能将非常量引用绑定到文字。我猜这里的 findstd::find,但显然这不是 OP 想要的。
猜你喜欢
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
相关资源
最近更新 更多