簡體   English   中英

無法插入到集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM