A<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FQt%2FQMap</id>
		<title>C++/Qt/QMap - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.cppe.ru/index.php?action=history&amp;feed=atom&amp;title=C%2B%2B%2FQt%2FQMap"/>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QMap&amp;action=history"/>
		<updated>2026-04-18T22:23:39Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QMap&amp;diff=1008&amp;oldid=prev</id>
		<title> в 14:21, 25 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QMap&amp;diff=1008&amp;oldid=prev"/>
				<updated>2010-05-25T14:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 14:21, 25 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QMap&amp;diff=1009&amp;oldid=prev</id>
		<title>Admin: 1 версия:&amp;#32;Импорт контента...</title>
		<link rel="alternate" type="text/html" href="http://www.cppe.ru/index.php?title=C%2B%2B/Qt/QMap&amp;diff=1009&amp;oldid=prev"/>
				<updated>2010-05-25T10:24:32Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия: Импорт контента...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Add user-defined class to QMap==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
#include &amp;lt;QHash&amp;gt;&lt;br /&gt;
#include &amp;lt;QMap&amp;gt;&lt;br /&gt;
#include &amp;lt;QSet&amp;gt;&lt;br /&gt;
#include &amp;lt;QDebug&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class Employee {&lt;br /&gt;
  public:&lt;br /&gt;
    Employee(const QString &amp;amp;surname, const QString &amp;amp;forename)&lt;br /&gt;
    {&lt;br /&gt;
      m_forename = forename;&lt;br /&gt;
      m_surname = surname;&lt;br /&gt;
    }&lt;br /&gt;
    QString forename() const { return m_forename; }&lt;br /&gt;
    QString surname() const { return m_surname; }&lt;br /&gt;
  private:&lt;br /&gt;
    QString m_forename;&lt;br /&gt;
    QString m_surname;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
inline bool operator&amp;lt;(const Employee &amp;amp;e1, const Employee &amp;amp;e2)&lt;br /&gt;
{&lt;br /&gt;
  if ( e1.surname() != e2.surname() )&lt;br /&gt;
    return e1.surname() &amp;lt; e2.surname();&lt;br /&gt;
  return e1.forename() &amp;lt; e2.forename();&lt;br /&gt;
}&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  Employee d1(&amp;quot;M&amp;quot;, &amp;quot;D&amp;quot;);&lt;br /&gt;
  Employee d2(&amp;quot;M&amp;quot;, &amp;quot;M&amp;quot;);&lt;br /&gt;
  Employee d3(&amp;quot;M&amp;quot;, &amp;quot;P&amp;quot;);&lt;br /&gt;
  QMap&amp;lt;int, Employee&amp;gt; map;&lt;br /&gt;
  map.insert(0, d1);&lt;br /&gt;
  map.insert(1, d2);&lt;br /&gt;
  map.insert(2, d3);&lt;br /&gt;
  QMapIterator&amp;lt;int, Employee&amp;gt; mi(map);&lt;br /&gt;
  while ( mi.hasNext() ) {&lt;br /&gt;
    mi.next();&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; mi.key() &amp;lt;&amp;lt; &amp;quot;:&amp;quot; &amp;lt;&amp;lt; mi.value().surname() &amp;lt;&amp;lt; mi.value().forename();&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==QMap for string to int==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 2006-2007, Johan Thelin&lt;br /&gt;
 * &lt;br /&gt;
 * All rights reserved.&lt;br /&gt;
 * &lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without modification, &lt;br /&gt;
 * are permitted provided that the following conditions are met:&lt;br /&gt;
 * &lt;br /&gt;
 *     * Redistributions of source code must retain the above copyright notice, &lt;br /&gt;
 *       this list of conditions and the following disclaimer.&lt;br /&gt;
 *     * Redistributions in binary form must reproduce the above copyright notice,  &lt;br /&gt;
 *       this list of conditions and the following disclaimer in the documentation &lt;br /&gt;
 *       and/or other materials provided with the distribution.&lt;br /&gt;
 *     * Neither the name of APress nor the names of its contributors &lt;br /&gt;
 *       may be used to endorse or promote products derived from this software &lt;br /&gt;
 *       without specific prior written permission.&lt;br /&gt;
 * &lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS&lt;br /&gt;
 * &amp;quot;AS IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT&lt;br /&gt;
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR&lt;br /&gt;
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
 &lt;br /&gt;
#include &amp;lt;QMap&amp;gt;&lt;br /&gt;
#include &amp;lt;QHash&amp;gt;&lt;br /&gt;
#include &amp;lt;QSet&amp;gt;&lt;br /&gt;
#include &amp;lt;QMultiMap&amp;gt;&lt;br /&gt;
#include &amp;lt;QMultiHash&amp;gt;&lt;br /&gt;
#include &amp;lt;QString&amp;gt;&lt;br /&gt;
#include &amp;lt;QtDebug&amp;gt;&lt;br /&gt;
void mapStringIntDemo()&lt;br /&gt;
{&lt;br /&gt;
  QMap&amp;lt;QString, int&amp;gt; map;&lt;br /&gt;
  &lt;br /&gt;
  map[&amp;quot;foo&amp;quot;] = 42;&lt;br /&gt;
  map[&amp;quot;bar&amp;quot;] = 13;&lt;br /&gt;
  map[&amp;quot;baz&amp;quot;] = 9;&lt;br /&gt;
  QString key;&lt;br /&gt;
  foreach( key, map.keys() )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot; = &amp;quot; &amp;lt;&amp;lt; map[key];&lt;br /&gt;
  QMap&amp;lt;QString, int&amp;gt;::ConstIterator ii;&lt;br /&gt;
  for( ii = map.constBegin(); ii != map.constEnd(); ++ii )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; ii.key() &amp;lt;&amp;lt; &amp;quot; = &amp;quot; &amp;lt;&amp;lt; ii.value();&lt;br /&gt;
  int sum; &lt;br /&gt;
  sum = map[&amp;quot;foo&amp;quot;] + map.value(&amp;quot;ingenting&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  foreach( key, map.keys() )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot; = &amp;quot; &amp;lt;&amp;lt; map[key];&lt;br /&gt;
  sum = map[&amp;quot;foo&amp;quot;] + map[&amp;quot;ingenting&amp;quot;];&lt;br /&gt;
  &lt;br /&gt;
  foreach( key, map.keys() )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot; = &amp;quot; &amp;lt;&amp;lt; map[key];&lt;br /&gt;
}&lt;br /&gt;
void hashStringIntDemo()&lt;br /&gt;
{&lt;br /&gt;
  QHash&amp;lt;QString, int&amp;gt; hash;&lt;br /&gt;
  &lt;br /&gt;
  hash[&amp;quot;foo&amp;quot;] = 42;&lt;br /&gt;
  hash[&amp;quot;bar&amp;quot;] = 13;&lt;br /&gt;
  hash[&amp;quot;baz&amp;quot;] = 9;&lt;br /&gt;
  QString key;&lt;br /&gt;
  foreach( key, hash.keys() )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot; = &amp;quot; &amp;lt;&amp;lt; hash[key];&lt;br /&gt;
  int sum; &lt;br /&gt;
  sum = hash[&amp;quot;foo&amp;quot;] + hash.value(&amp;quot;ingenting&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
  foreach( key, hash.keys() )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot; = &amp;quot; &amp;lt;&amp;lt; hash[key];&lt;br /&gt;
  sum = hash[&amp;quot;foo&amp;quot;] + hash[&amp;quot;ingenting&amp;quot;];&lt;br /&gt;
  &lt;br /&gt;
  foreach( key, hash.keys() )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot; = &amp;quot; &amp;lt;&amp;lt; hash[key];&lt;br /&gt;
}&lt;br /&gt;
class Person&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
  Person( QString name, QString number );&lt;br /&gt;
  &lt;br /&gt;
  QString name() const;&lt;br /&gt;
  QString number() const;&lt;br /&gt;
private:&lt;br /&gt;
  QString m_name, m_number;&lt;br /&gt;
};&lt;br /&gt;
Person::Person( QString name, QString number ) : m_name( name ), m_number( number ) {}&lt;br /&gt;
QString Person::name() const { return m_name; }&lt;br /&gt;
QString Person::number() const { return m_number; }&lt;br /&gt;
bool operator==( const Person &amp;amp;a, const Person &amp;amp;b )&lt;br /&gt;
{&lt;br /&gt;
  return (a.name() == b.name()) &amp;amp;&amp;amp; (a.number() == b.number());&lt;br /&gt;
}&lt;br /&gt;
uint qHash( const Person &amp;amp;key )&lt;br /&gt;
{&lt;br /&gt;
  return qHash( key.name() ) ^ qHash( key.number() );&lt;br /&gt;
}&lt;br /&gt;
void hashPersons()&lt;br /&gt;
{&lt;br /&gt;
  QHash&amp;lt;Person, int&amp;gt; hash;&lt;br /&gt;
  &lt;br /&gt;
  hash[ Person( &amp;quot;Anders&amp;quot;, &amp;quot;8447070&amp;quot; ) ] = 10;&lt;br /&gt;
  hash[ Person( &amp;quot;Micke&amp;quot;, &amp;quot;7728433&amp;quot; ) ] = 20;&lt;br /&gt;
  &lt;br /&gt;
  qDebug() &amp;lt;&amp;lt; hash.value( Person( &amp;quot;Anders&amp;quot;, &amp;quot;8447070&amp;quot; ) ); // 10&lt;br /&gt;
  qDebug() &amp;lt;&amp;lt; hash.value( Person( &amp;quot;Anders&amp;quot;, &amp;quot;8447071&amp;quot; ) ); // 0&lt;br /&gt;
  qDebug() &amp;lt;&amp;lt; hash.value( Person( &amp;quot;Micke&amp;quot;, &amp;quot;7728433&amp;quot; ) ); // 20&lt;br /&gt;
  qDebug() &amp;lt;&amp;lt; hash.value( Person( &amp;quot;Michael&amp;quot;, &amp;quot;7728433&amp;quot; ) ); // 0&lt;br /&gt;
}&lt;br /&gt;
void setStringDemo()&lt;br /&gt;
{&lt;br /&gt;
  QSet&amp;lt;QString&amp;gt; set;&lt;br /&gt;
  &lt;br /&gt;
  set &amp;lt;&amp;lt; &amp;quot;Ada&amp;quot; &amp;lt;&amp;lt; &amp;quot;C++&amp;quot; &amp;lt;&amp;lt; &amp;quot;Ruby&amp;quot;;&lt;br /&gt;
  &lt;br /&gt;
  for( QSet&amp;lt;QString&amp;gt;::ConstIterator ii = set.begin(); ii != set.end(); ++ii )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; *ii;&lt;br /&gt;
  if( set.contains( &amp;quot;FORTRAN&amp;quot; ) )&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;FORTRAN is in the set.&amp;quot;;&lt;br /&gt;
  else&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; &amp;quot;FORTRAN is out.&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
void multimapStringIntDemo()&lt;br /&gt;
{&lt;br /&gt;
  QMultiMap&amp;lt;QString, int&amp;gt; multi;&lt;br /&gt;
  &lt;br /&gt;
  multi.insert( &amp;quot;foo&amp;quot;, 10 );&lt;br /&gt;
  multi.insert( &amp;quot;foo&amp;quot;, 20 );&lt;br /&gt;
  multi.insert( &amp;quot;bar&amp;quot;, 30 );&lt;br /&gt;
  QSet&amp;lt;QString&amp;gt; keys;&lt;br /&gt;
  foreach( QString key, multi.keys() )&lt;br /&gt;
    keys &amp;lt;&amp;lt; key;&lt;br /&gt;
    &lt;br /&gt;
  foreach( QString key, keys )&lt;br /&gt;
    foreach( int value, multi.values(key) )&lt;br /&gt;
      qDebug() &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot;: &amp;quot; &amp;lt;&amp;lt; value;&lt;br /&gt;
  QMultiMap&amp;lt;QString, int&amp;gt;::ConstIterator ii = multi.find( &amp;quot;foo&amp;quot; );&lt;br /&gt;
  while( ii != multi.end() &amp;amp;&amp;amp; ii.key() == &amp;quot;foo&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; ii.value();&lt;br /&gt;
    ++ii;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
void multihashStringIntDemo()&lt;br /&gt;
{&lt;br /&gt;
  QMultiHash&amp;lt;QString, int&amp;gt; multi;&lt;br /&gt;
  &lt;br /&gt;
  multi.insert( &amp;quot;foo&amp;quot;, 10 );&lt;br /&gt;
  multi.insert( &amp;quot;foo&amp;quot;, 20 );&lt;br /&gt;
  multi.insert( &amp;quot;bar&amp;quot;, 30 );&lt;br /&gt;
  QSet&amp;lt;QString&amp;gt; keys;&lt;br /&gt;
  foreach( QString key, multi.keys() )&lt;br /&gt;
    keys &amp;lt;&amp;lt; key;&lt;br /&gt;
    &lt;br /&gt;
  foreach( QString key, keys )&lt;br /&gt;
    foreach( int value, multi.values(key) )&lt;br /&gt;
      qDebug() &amp;lt;&amp;lt; key &amp;lt;&amp;lt; &amp;quot;: &amp;quot; &amp;lt;&amp;lt; value;&lt;br /&gt;
  QMultiHash&amp;lt;QString, int&amp;gt;::ConstIterator ii = multi.find( &amp;quot;foo&amp;quot; );&lt;br /&gt;
  while( ii != multi.end() &amp;amp;&amp;amp; ii.key() == &amp;quot;foo&amp;quot; )&lt;br /&gt;
  {&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; ii.value();&lt;br /&gt;
    ++ii;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
  mapStringIntDemo();&lt;br /&gt;
  hashStringIntDemo();&lt;br /&gt;
  hashPersons();&lt;br /&gt;
  setStringDemo();&lt;br /&gt;
  multimapStringIntDemo();&lt;br /&gt;
  multihashStringIntDemo();&lt;br /&gt;
  &lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==QMap that associates a string to an integer value is created:==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;  &lt;br /&gt;
#include &amp;lt;QMap&amp;gt;&lt;br /&gt;
#include &amp;lt;QMapIterator&amp;gt;&lt;br /&gt;
#include &amp;lt;QDebug&amp;gt;&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
  QMap&amp;lt;QString, int&amp;gt; map;&lt;br /&gt;
  map[&amp;quot;one&amp;quot;] = 1; // insert using the [] operator&lt;br /&gt;
  map[&amp;quot;two&amp;quot;] = 2;&lt;br /&gt;
  map.insert(&amp;quot;seven&amp;quot;, 7); // insert using insert()&lt;br /&gt;
  qDebug() &amp;lt;&amp;lt; map[&amp;quot;seven&amp;quot;]; // read using the [] operator&lt;br /&gt;
  qDebug() &amp;lt;&amp;lt; map.value(&amp;quot;seven&amp;quot;); // read using value()&lt;br /&gt;
  QMapIterator&amp;lt;QString, int&amp;gt; i(map);&lt;br /&gt;
  while (i.hasNext()) {&lt;br /&gt;
    i.next();&lt;br /&gt;
    qDebug() &amp;lt;&amp;lt; i.key() &amp;lt;&amp;lt; &amp;quot;:&amp;quot; &amp;lt;&amp;lt; i.value();&lt;br /&gt;
  }&lt;br /&gt;
  return 0;&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>