我开发了一个拥有许多内置函数的脚本引擎,所以要调用任何函数,我的代码就进入了if .. else if .. else if检查名称的墙,但我想开发一个更有效的解决scheme。 我应该使用散列表与string作为键和指针作为值? 我怎么能通过使用STL地图呢? 编辑 :进入我的脑海的另一点:当然使用地图将强制编译器不内联函数,但我低效率的方法没有任何开销产生的function调用的必要性,它只是执行代码。 所以我想知道函数调用产生的开销是否会比使用if..else链更好。否则,我可以通过在运行时检查一个字符来最小化比较次数(将会更长但更快)。
我需要使用它的值而不是它的键来对std :: map进行sorting。 有没有一个简单的方法来做到这一点。 我在follwing线程中得到了一个解决scheme: std :: map按数据sorting? 有没有更好的解决scheme。 map <long,double> testMap; //一些代码来生成地图中的值。 sort(testMap.begin(),testMap.end()); //有没有像这样的functionsorting地图?
在遍历ArrayList,HashMap和其他集合的时候,有没有比较传统的for循环和迭代器的性能testing结果? 或者干脆为什么我应该使用Iterator over循环,反之亦然?
我想弄清楚为什么下面的代码不工作,我假设这是使用char *作为键types的问题,但我不知道如何解决它或为什么发生。 我使用的所有其他函数(在HL2 SDK中)都使用char*所以使用std::string会导致很多不必要的复杂性。 std::map<char*, int> g_PlayerNames; int PlayerManager::CreateFakePlayer() { FakePlayer *player = new FakePlayer(); int index = g_FakePlayers.AddToTail(player); bool foundName = false; // Iterate through Player Names and find an Unused one for(std::map<char*,int>::iterator it = g_PlayerNames.begin(); it != g_PlayerNames.end(); ++it) { if(it->second == NAME_AVAILABLE) { // We found an Available Name. Mark as Unavailable […]
如何在迭代时从地图中删除? 喜欢: std::map<K, V> map; for(auto i : map) if(needs_removing(i)) // remove it from the map 如果我使用map.erase它将使迭代器无效
我目前有一个std::map<std::string,int>将整数值存储到一个唯一的string标识符,我会查找string。 它主要是我想要的,除了它不跟踪插入顺序。 所以,当我迭代地图打印出来的值,他们根据stringsorting; 但我希望他们按照(第一)插入的顺序sorting。 我想使用一个vector<pair<string,int>>来代替,但是我需要查找string并递增大约10,000,000次的整数值,所以我不知道向量是否会明显变慢。 有没有办法使用std :: map还是有另一个std容器,更适合我的需要? [我在GCC 3.4上,我的std :: map中可能不超过50对值]。
我有这样的地图, Map<Integer,ArrayList<Object>> myMap = new LinkedHashMap<Integer,ArrayList<Object>>(); 现在我必须迭代这个Map,然后迭代地图中的ArrayList。 我怎样才能使用JSTL?