我正在尝试存储对象矢量的哈希映射。在C ++中

时间:2015-06-13 05:51:37

标签: c++ dictionary vector

我正在尝试存储对象矢量的哈希映射。

解释/目标用语言表达。 如果未找到任何密钥,请创建一个新条目。 如果找到了一个键,则将一个新对象推入对象向量

在伪代码中我正在尝试

map<string,vector<Object>>    
data object{
    int data
    vector<keywords> keywords
}    
function(object arg)
{
    local_key_var = object->keywords;    
    for ( key_element : local_key_var)
    {
        if(key_element does not exist in vector<Object> )
        {
            create entry as  map<key_element,vector<Object>    
        } 
        else 
        {
            local_vector_var = current vectorObject;    
            local_vetor_var.push(arg);    
            erase current vector object;    
            insert new_vector_var int map<key_element,vector<objects>>;
        }    
    }    
}

在c ++代码中,这就是我所处的位置。

void Library::addItemByKeyWord(Item*  item)
{    

    vector<string> localKeyVector = item->getKeywords();    

    for (auto element : localKeyVector) // access by reference to avoid copying
    {    

        map<string, vector<Item**>>::const_iterator it = keywordLib.find(element);
        if(it == keywordLib.end()) // not found
        {    

            vector<Item**> localVector;
            localVector.push_back(&item);
            keywordLib.insert(pair<string,vector<Item**>>(item->getTitle(),localVector));    

        }
        else // found
        {
            // copy found stack of items to vector
            vector<Item**> localVector = it->second;    

            // push passed in item on top of new copy
            localVector.push_back(&item);    

            // remove old map entry //
            keywordLib.erase(it);    

            // push new copy of vectors on top of hash //
            keywordLib.insert(pair<string,vector<Item**>>(item->getTitle(),localVector));
        }
    }

请注意以下代码可能不是我最好的尝试。我被困在这上面的时间超过了我承认的时间,我认为现在是时候了。

0 个答案:

没有答案