c++ - 如何重载 == 运算符以查看具有字符串向量的两个对象是否相等?
问题描述
我正在编写一个名为的类,该类StringSet
具有vector<string> data
并int length
作为其私有成员。
bool StringSet::operator == (StringSet d)
{
for (int i = 0; i < length; i++)
{
if (data[i] == d.data[i])
{
return true;
}
}
return false;
}
当我尝试像这样调用这个函数时,
StringSet doc1, doc2;
if (doc1 == doc2)
{
cout << "Both sentences are identical!\n";
}
我得到一个断言失败,说向量下标超出范围,我知道这意味着什么,但我不知道它在这里意味着什么。如果有人能指出我犯的一个明显错误,那就太好了,因为我是 C++ 的新手。
解决方案
这很简单
bool StringSet::operator == (const StringSet& d) const
{
return data == d.data;
}
std::vector
并且std::string
已经有比较运算符,因此您不必实现一些特殊的东西。
推荐阅读
- python - 删除熊猫系列中层次索引的第一个元素
- json - Firefox 扩展:contentscript 权限中的意外属性
- node.js - Hyperledger Fabric 和 NodeJS - 如何转换缓冲区
- sql - 日期格式更改为 dd/mm/yyyy 到 dd mon yy 在 sql server
- python - Python 的类型错误:str 和 int
- python-3.x - 单击时更改 QPushButton 的文本
- amazon-web-services - 安排 AWS lambda 函数在特定时间间隔内调用
- r - 正则表达式在 R 拆分问题中使用 rebus?
- java - 如何修复 org.springframework.beans.factory.UnsatisfiedDependencyException 错误创建具有名称的 bean 的测试失败
- python - 使用 Python 对数据框进行分组