[英]Trouble inserting to a set
我正在嘗試添加一個從vector<string>
繼承的Tuple
到一個集合。 (我讀過這是不好的做法,但我的教授告訴我們這一點,並說對於這個作業,他希望我們無論如何都從vector<string>
繼承)我有一個映射,其中包含一個字符串作為鍵和一個Relation
作為值。 Relation
是我們為此作業構建的一個類。 在Relation
有一個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(...)
方法。
set<...>
通常只接受唯一的項目。 可能您的vector<string>
元組不是唯一的。
您也可以通過重載提供適當的比較運算符方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.