首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在向量和映射的键中查找函数

在向量和映射的键中查找函数
EN

Stack Overflow用户
提问于 2012-01-09 01:27:27
回答 2查看 260关注 0票数 0

Vector find函数可以搜索插入的值,即使您尝试通过提供子字符串进行查找。对于map的键来说,这是相同的吗?

代码语言:javascript
复制
   int main()
   { 
    vector<string> v;
    v.push_back("text");
    v.push_back("[[text");
    v.push_back("text");

    for (unsigned i = 0; i < v.size(); i++)
     {
       if (v[i].find("[[") == 0)
       {
         v[i].append("]]");
       }
     }
  }

在这里,它找到"[[text“并将其设置为"[text]”。

我在map中尝试过,但代码在运行时崩溃。我正在使用Dev c++

代码语言:javascript
复制
   int main()
{
      std::multimap<string, string> m;
      std::multimap<string, string> intersection;
      std::multimap<string, string>::iterator it8;

      m.insert(pair< string, string>("4-2"," 61-7" ));
      m.insert(pair< string, string>("5-2"," 61-7" ));

     multimap<string, string>::iterator it4;
     multimap<string, string>::iterator it5;
    for ( it4 = m.begin(); it4 !=m.end(); it4++)
    {
        if (m.find("5-") == 0)
        it5=it4;      
    }
    cout << " result of 5 search is" << (*it5).first << ", " << (*it5).second <<endl;
    m.clear();
   getchar();

 }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-09 01:56:38

(ideone上的示例正确代码)

错误是这一行

代码语言:javascript
复制
if (m.find("5-") == 0)

永远不会成功。你可能会对此感到惊讶。m.find("5-")搜索整个映射,查找键值恰好等于"5-“的条目。你的钥匙是"4-2“和"5-2”。

是否要查找包含子字符串"5-“的键?然后你需要像这样的东西

代码语言:javascript
复制
it4->first.find("5-"); // check if the key string at this entry contains "5-"

我认为你想要一个这样的循环:

代码语言:javascript
复制
multimap<string, string>::iterator it4;
for ( it4 = m.begin(); it4 !=m.end(); it4++)
{
    if (it4->first.find("5-") != string :: pos)
            cout << " result of 5 search is" << it4->first << ", " << it4->second <<endl;      
}

正如其他人所指出的,您对vectormapfind方法不感兴趣。您对string的find方法很感兴趣--这是完全不同的。因此,你的问题的标题有点误导(无意中)。

票数 2
EN

Stack Overflow用户

发布于 2012-01-09 01:31:13

std::set<>的问题是您不能就地修改它的元素,因为您可能会违反它的顺序。但是,您可以使用迭代器(而不是operator[])从set.begin()迭代到set.end(),然后删除并重新插入修改过的元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8779591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档