我有一个类将提供一个函数看到的一个项目,它将返回false
第一次看到某个字符串,但每次后true
当相同的字符串被调用。C++跟踪一个项目,然后返回
class Tracking
{
...
public:
bool itemseen(const char* str)
{
..
}
};
我有一个类将提供一个函数看到的一个项目,它将返回false
第一次看到某个字符串,但每次后true
当相同的字符串被调用。C++跟踪一个项目,然后返回
class Tracking
{
...
public:
bool itemseen(const char* str)
{
..
}
};
这听起来像你需要/想任何一个std::set<std::string>
或std::unordered_set<std::string>
。
当您收到一个项目时,尝试将其插入到[unordered_]集合中。检查返回值以查看成功与否。
请注意,首先搜索该项目,然后尝试插入,如果它不存在是相当浪费。通常你只是想尝试插入,然后检查返回值,看看是否能成功:
class whatever {
std::set<std::string> strings;
public:
bool itemseen(std::string const &input) {
return !strings.insert(input).second;
}
};
如果你做一个搜索,然后再插入,你强迫它的时候搜索的集合两次/如果它插入一个新的对象。使用返回值可以让您只搜索一次。 IOW,你可以预计它会快两倍(虽然缓存可能会使第二次搜索更快,所以测量的差异可能会比这小)。
有一个问题在这里? –
这个问题没有显示研究工作。 – Johnsyweb