Dan*_*iel 0 c++ vector shared-ptr
因此,我想对类中的向量进行一些错误检查,以便在将新项添加到向量之前查看该项是否已存在.
ClassA cpp
void ClassA::func(std::shared_ptr<ClassB> new_item)
{
for(auto items : vector_)
{
if(items = new_item)
{
return;
}
vector_.push_back(new_item);
}
}
Run Code Online (Sandbox Code Playgroud)
vector_是成员类成员std :: vector.使用此当前实现,所有new_item都被忽略,即使它不是重复的.我知道'if(items = new_item)'是有问题的一行,但我不知道为什么.
您在这里分配而不是比较相等:
if(items = new_item) // assigns value of new_item to items
Run Code Online (Sandbox Code Playgroud)
使用经过良好测试的标准库函数可以轻松避免这种问题,例如std::find:
#include <algorithm> // for std::find
....
if (find(vector_.begin(), vector_.end(), newitem) == vector_.end())
vector_.push_back(newitem);
Run Code Online (Sandbox Code Playgroud)