Согласно документации, minPadding / maxPadding не работает с категориями. Поэтому вы должны использовать i.e datetime xAxis и определить правильный tickInterval / pointInterval.
Когда Вы пишете
map[key] = value;
нет никакого способа сказать, заменили ли Вы value
для key
, или если Вы создали новое key
с value
.
map::insert()
только создаст:
using std::cout; using std::endl;
typedef std::map<int, std::string> MyMap;
MyMap map;
// ...
std::pair<MyMap::iterator, bool> res = map.insert(MyMap::value_type(key,value));
if ( ! res.second ) {
cout << "key " << key << " already exists "
<< " with value " << (res.first)->second << endl;
} else {
cout << "created key " << key << " with value " << value << endl;
}
Для большинства моих приложений, я обычно не забочусь, создаю ли я или заменяю, таким образом, я использую более легкое для чтения map[key] = value
.
Эти два имеют различную семантику когда дело доходит до ключа, уже существующего в карте. Таким образом, они не действительно непосредственно сопоставимы.
, Но оператор [] версия требует значения по умолчанию, создающего значение и затем присвоение, поэтому если это более дорого, тогда копируют конструкцию, то это будет более дорого. Иногда конструкция по умолчанию не имеет смысла, и затем было бы невозможно использовать оператор [] версия.
Если хит производительности конструктора по умолчанию не является проблемой, из любви к богу, пойдите с более читаемой версией.
:)
Глюк с картой:: вставьте (), то, что это не заменит значение, если ключ уже будет существовать в карте. Я видел код C++, записанный программистами Java, где они ожидали, вставляют () для поведения того же пути как Map.put () в Java, где значения заменяются.
Одно примечание - то, что можно также использовать Повышение. Присвойтесь:
using namespace std;
using namespace boost::assign; // bring 'map_list_of()' into scope
void something()
{
map<int,int> my_map = map_list_of(1,2)(2,3)(3,4)(4,5)(5,6);
}
Another thing to note with std::map
:
myMap[nonExistingKey];
will create a new entry in the map, keyed to nonExistingKey
initialized to a default value.
This scared the hell out of me the first time I saw it (while banging my head against a nastly legacy bug). Wouldn't have expected it. To me, that looks like a get operation, and I didn't expect the "side-effect." Prefer map.find()
when getting from your map.