我必须存储和处理文件中几个元素的位置。每个元素都位于文件中的定义位置(行索引,行中的单词索引)。每个元素都由存储为字符串的ID唯一定义。
我将此信息存储在这样的地图中:
typedef std::pair<std::size_t,std::size_t> LineColumn;
typedef std::map<std::string,LineColumn> ElementLineColumn;
ElementLineColumn element_line_column;
这对于访问每个元素的位置非常有效(我在算法的多个部分中都做了此操作)。
但是,这对于读取文件中的所有元素没有用。为此,我将信息复制到另一个地图中,如下所示:
typedef std::map<std::size_t,std::string> ColumnElement;
typedef std::map<std::size_t,ColumnElement> LineColumnElement;
LineColumnElement line_column_element;
line_column_element[element_line_column[key].first][element_line_column[key].second] == key
第二个存储区比按文件存储的顺序更有用,以相同的顺序遍历所有元素。
我的问题:C ++ 03 / boost中是否有一些智能结构能够通过行/列索引和ID进行有效访问而无需重复?
注意:出于兼容性考虑,我不使用C ++ 11。