c++ - 无法插入到集合中
问题描述
我正在尝试将Tuple
继承自vector<string>
的 a 添加到集合中。(我读过这是不好的做法,但我的教授告诉我们这一点,并说他希望我们从vector<string>
无论如何继承这个作业)我有一个地图,其中包含一个字符串作为键和 aRelation
作为值。Relation
是我们正在为此作业构建的课程。在其中 a本质上是Relation
a 。我的问题是,当我尝试将 a 添加到实例时,我无法这样做。set<Tuple>
Tuple
vector<string>
Tuple
Relation
我第一次尝试添加到集合时,集合的大小从 0 变为 1(成功插入),但在第一次尝试之后,大小保持为 1(尝试失败)。
我已经包括了我已经缩小问题范围的代码区域,并且包括了我认为需要的所有内容,但这是漫长的一天,如果我错过了什么,请原谅。
//Interpreter file
Database dataBase;
void Interpreter::createDatabase(){
for(unsigned int z = 0; z < dp.getFacts().size(); z++){
string relName = dp.getFacts()[z].getName();
vector<string> tup;
for(unsigned int i = 0; i < dp.getFacts()[z].getParams().size(); i++){
tup.push_back(dp.getFacts()[z].getParams()[i].getName());
}
dataBase.addTuple(relName,tup);
}
}
//in the Database.cpp file
map<string,Relation> db;
void Database::addTuple(string name, vector<string> tuple){
Relation temp = db.at(name);
temp.addTuple(tuple);
db.at(name) = temp;
}
// in the Relation.cpp File
set<Tuple> tuples;
void Relation::addTuple(vector<string> tuple){
Tuple t = Tuple(tuple);
tuples.insert(t);
}
// Tuple Class
vector<string> values;
Tuple::Tuple(){}
Tuple::Tuple(vector<string> val){
values = val;
}
Tuple::~Tuple(){}
string Tuple::toString(){
string str = "";
for(unsigned int i = 0; i < values.size(); i++){
str = str + values[i] + ".";
}
return str;
}
解决方案
您可以使用调试器并注意
addTuple(...)
方法。
Aset<...>
通常只接受独特的项目。可能您的vector<string>
元组不是唯一的。
您也可以通过重载提供适当的比较运算符方法。
推荐阅读
- excel - Excel 多级数组公式与部分字符串匹配以求和结果单元格
- mongodb - 基于ObjectID的Mongodb Aggregation中的查询问题
- reactjs - React 函数的返回类型是什么
- ios - 提交到 AppStore Connect 时不支持 iOS 13
- angular - Angular 8后退按钮和参数
- python - Python 访问从导入的函数返回元组
- python - 由于“断言失败”而导致屏蔽失败......sameSize
- database - Csharp中的sqldataAdapter以更简单的方式?
- python - conda-forge 能否在安装 MKL 版本的软件包时优先于默认值?
- spring - 异常异常。无法获取当前线程的事务同步会话