C++ 如何在C+;中从头文件实现::find()和::count()+;?

C++ 如何在C+;中从头文件实现::find()和::count()+;?,c++,count,find,C++,Count,Find,我试图从头文件实现一个堆栈类。 我用3个文件编写了它——stack.h、stack.cpp和main.cpp 要查找元素,我将在stack.cpp中使用以下代码 bool stack::find (const string &elem) const { vector<string>::const_iterator it = _stack.begin(); return ::find(it,_stack.end(),elem))!=_stack.end(); }

我试图从头文件实现一个堆栈类。 我用3个文件编写了它——stack.h、stack.cpp和main.cpp

要查找元素,我将在stack.cpp中使用以下代码

bool stack::find (const string &elem) const
{
    vector<string>::const_iterator it = _stack.begin();
    return ::find(it,_stack.end(),elem))!=_stack.end();
}
bool堆栈::查找(常量字符串和元素)常量
{
vector::const_迭代器it=_stack.begin();
return::find(it,_stack.end(),elem))!=_stack.end();
}
但是,find始终返回false。每次我都会听到“找不到单词”。 你能帮我做这个吗


下面是代码的pastebin链接:

如果要进行迭代查找,则堆栈不是要使用的数据结构。堆栈的要点是必须弹出元素才能访问它们。如果要在搜索中遍历所有元素,保存堆栈状态的唯一方法是将所有元素保存在单独的容器中,并在搜索完成后将它们推回堆栈。如果要这样做,为什么不使用像std::vector这样的随机访问容器呢


所以你的问题的答案是:不要这样做,我们需要一个不同的容器。

我不确定返回中的括号是如何工作的,但是比较应该在里面。嗯,我可能误解了这个问题,但是std::stack有什么问题吗?
::find
是如何定义的?一个名为
stack
的类,名为
find
的方法,加上
使用名称空间std
只是自找麻烦。在堆栈中查找没有简单方法是有原因的:您必须潜在地弹出整个堆栈。如果您试图进行查找,则需要不同的数据结构。好的,谢谢。我只是在学习实现类,这是书中给出的一个例子。它执行除查找和计数之外的所有堆栈操作。它是一个std::向量。