C++ 如何在指向自定义类的指针列表中查找DAN元素

C++ 如何在指向自定义类的指针列表中查找DAN元素,c++,find,std,stdlist,C++,Find,Std,Stdlist,背景:我正在尝试实现一个国际象棋游戏。 实现如下所示(->表示每个工件包含一个点) 板->(列表)件->点 通常,我的问题是我有一个指向自定义类(工件)的指针列表。 我想根据其中一个字段(他的点-他所在的位置)找到某个片段 如果我想这样找到他: PieceList::const_iterator itPiece = find(_onePieces.begin(),_onePieces.end(),constSearchPiece); 我相信我得到了错误的答案,因为我正在比较两个元素所指向的单元

背景:我正在尝试实现一个国际象棋游戏。 实现如下所示(->表示每个工件包含一个点) 板->(列表)件->点

通常,我的问题是我有一个指向自定义类(工件)的指针列表。 我想根据其中一个字段(他的点-他所在的位置)找到某个片段

如果我想这样找到他:

PieceList::const_iterator itPiece = find(_onePieces.begin(),_onePieces.end(),constSearchPiece);
我相信我得到了错误的答案,因为我正在比较两个元素所指向的单元格,而不是它们的内容

注意:我已经为我的自定义类(工件和点)创建了一个
操作符==
。 另一个注意事项:我需要将片段作为const获取,因为它位于const函数中

我已尝试实现自己的搜索功能:

PieceList::const_iterator constPieceFind(PieceList pList, Piece p) const{
    PieceList::const_iterator iter;
    for( iter =pList.begin(); iter !=pList.end(); iter++){
        if (**iter == p)
            return iter;
    }
    return pList.end();
}
虽然该函数工作正常并找到所需的片段,但当我检查调用该函数的迭代器时,它是空的


我应该怎么做才能解决这个问题?

您的函数按值获取
pList
参数。这意味着
piecelest
容器在传递给函数时被复制,并且
constPieceFind
中使用的迭代器都引用容器的本地副本。当函数返回时,副本将被销毁,并且返回的迭代器不再指向有效内存。更改函数,使其引用
pList
参数



您可能还希望对第二个参数执行相同的操作,以防止不必要的复制,尽管这不是使代码正常工作所必需的。

您的函数按值获取
pList
参数。这意味着
piecelest
容器在传递给函数时被复制,并且
constPieceFind
中使用的迭代器都引用容器的本地副本。当函数返回时,副本将被销毁,并且返回的迭代器不再指向有效内存。更改函数,使其引用
pList
参数



您可能还希望对第二个参数执行相同的操作,以防止不必要的复制,尽管这不是使代码正常工作所必需的。

您的函数按值获取
pList
参数。这意味着
piecelest
容器在传递给函数时被复制,并且
constPieceFind
中使用的迭代器都引用容器的本地副本。当函数返回时,副本将被销毁,并且返回的迭代器不再指向有效内存。更改函数,使其引用
pList
参数



您可能还希望对第二个参数执行相同的操作,以防止不必要的复制,尽管这不是使代码正常工作所必需的。

您的函数按值获取
pList
参数。这意味着
piecelest
容器在传递给函数时被复制,并且
constPieceFind
中使用的迭代器都引用容器的本地副本。当函数返回时,副本将被销毁,并且返回的迭代器不再指向有效内存。更改函数,使其引用
pList
参数



您可能还希望对第二个参数执行相同的操作,以防止不必要的复制,尽管这不是使代码正常工作所必需的。

函数返回的迭代器为“blank”是什么意思?在调试模式下,调试器不显示任何值函数返回的迭代器为“blank”是什么意思?在调试模式下,调试器不显示任何值函数返回的迭代器为“空白”是什么意思?在调试模式下,调试器不显示任何值函数返回的迭代器为“空白”是什么意思?在调试模式下,调试器不显示任何值
PieceList::const_iterator constPieceFind(PieceList const& pList, Piece p) const
//                                                 ^^^^^^