相关疑难解决方法(0)

STL MAP应该使用find()或[n]标识符来查找地图中的元素?

我很困惑哪个更有效率?

由于我们可以直接访问地图,为什么我们需要使用find?

我只需要知道哪种方式更有效.

#include <iostream>
#include <map>
using namespace std;

int main ()
{
  map<char,int> mymap;
  map<char,int>::iterator it;

  mymap['a']=50;
  mymap['b']=100;
  mymap['c']=150;
  mymap['d']=200;

  //one way

  it=mymap.find('b');
  cout << (*it).second <<endl;

  //another way
      cout << mymap['b'] <<endl;

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!:)

c++ stl map upperbound

9
推荐指数
2
解决办法
9752
查看次数

更容易计算向量中相同字符串的方法?

我试图得到一个矢量中所有相同字符串数量的输出作为一个更大的程序的一部分.经过大量的研究,我已经设法将一些有用的东西放在一起但看起来很混乱,我想知道是否有更好的方法来做到这一点.

#include <vector>
#include <string>
#include <map>
#include <algorithm>
#include <iostream>

using namespace std;

void setMap(string i);
void addMap(string i);
map<string, int> myMap;

int main()
{
    vector<string> myVector;
    string myArray[6]={"foo","foo","bar","roo","foo","bar"};
    for (int i=0; i<6; i++)
    {
        myVector.push_back(myArray[i]);
    }
    for_each (myVector.begin(), myVector.end(), setMap);
    for_each (myVector.begin(), myVector.end(), addMap);
    for (map<string, int, less< string >>::const_iterator iter = myMap.begin();
      iter != myMap.end(); ++iter )
      cout <<iter->first<<'\t'<<iter->second<<endl;
    return 0;
}

void setMap(string i)
{
    myMap[i]=0;
}

void addMap(string i)
{
    myMap[i]++;
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作得很好,并给了我以后的输出,但我不是那么热衷于必须添加2个额外的函数才能使它工作或者必须使地图全局化.我们将非常感激地收到任何提示.

c++ string vector map

1
推荐指数
1
解决办法
1590
查看次数

标签 统计

c++ ×2

map ×2

stl ×1

string ×1

upperbound ×1

vector ×1