更新 - 此问题可能相关(Use iterator to call the non-static function in STL Set)
我正在创建一个程序来扫描和解析文本文件,创建数据库,并根据方案和事实评估查询。我的数据结构如下:
Relation
Scheme
set<Tuple>
Scheme
和Tuple
继承自std::vector<std::string>
的位置。 Scheme
和每个Tuple
应该具有相同数量的元素,并且我反复需要删除所有三个中某个索引处的值。例如,如果我有:
Scheme
C D H
Tuples
EE200 F 10AM
EE200 M 10AM
EE200 W 1PM
组织如此:
C='EE200' D='F' H='10AM'
C='EE200' D='M' H='10AM'
C='EE200' D='W' H='1PM'
在每个向量的索引0处删除后,我应该:
D='F' H='10AM'
D='M' H='10AM'
D='W' H='1PM'
我已经用this code编写了一个示例来解决问题的本地化问题。我首先擦除Scheme
中的索引(实际上是字符串向量),然后遍历集合中的每个Tuple
并尝试删除索引处的值。在我的示例中,我创建了类,而只使用了std::string
或std::vector<std::string>
。问题出在这里:
for(set<vector<string>>::iterator t = tempTuples.begin(); t != tempTuples.end(); ++t)
{
// how do I erase the element at t?
}
tempTuples
是Tuple
个对象的集合(这里只是字符串的向量)。 (*t).erase((*t).begin())
在此时插入时会出错(no matching member function for call to 'erase'
)。如何删除索引处的值?