我正在尝试存储对象矢量的哈希映射。
解释/目标用语言表达。 如果未找到任何密钥,请创建一个新条目。 如果找到了一个键,则将一个新对象推入对象向量
在伪代码中我正在尝试
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));
}
}
请注意以下代码可能不是我最好的尝试。我被困在这上面的时间超过了我承认的时间,我认为现在是时候了。