values(key) returns a list of all the values with the key. remove(key) removes all the values for key.
Then reinsert new values for key. But why do you want to put the same <key,value> pair multiple times? martin ________________________________ From: [email protected] [[email protected]] on behalf of pengliang(彭亮) [[email protected]] Sent: Thursday, March 07, 2013 12:51 PM To: Danny Koppel; pengliang(??); [email protected] Subject: [Development] 答复: 答复: [Qt-interest] QMultiHash hi QMultiHash<QString,long>; it allow you to insert some same keys, i have to find some string whether exist in the hash, if exist, then set values of hash to 0. -------------------- my program is used to remove duplicate rows in two files. so, i read file1 to QMultiHash<QString,long>hash, qstring are content of rows, long are index of rows, when i read one row in file2, i have to check whether hash has this row, if yes, i set the values of hash to 0(ignore these rows), else write this row to a new file. then, create QMultiMap<long,QString>map, insert hash to map, and loop map write QString to another new file. --------------------- who has a good advice? thanks ken -----Original Message----- From: Danny Koppel [mailto:[email protected]] Sent: 2013-3-7 (星期四) 18:11 To: 'pengliang(??)'; [email protected] Subject: RE: [Development] 答复: [Qt-interest] QMultiHash Hi, If you always use replace, there won’t be double keys. This is depending on your implementation. Other option: Use the find() method on the class. Then use an iterator on the results to assign the new value. But if I read your mail, you suggest that you always replace ALL values with the same key. (Then I would like to know why you have double keys at all?!) So then I would just use replace. Then the key will occur only once. I’m working with assumptions, so that’s why I ‘offer’ two solutions. Kind regards, Danny Van: [email protected] [mailto:[email protected]] Namens pengliang(??) Verzonden: donderdag 7 maart 2013 10:59 Aan: Danny Koppel; [email protected] Onderwerp: [Development] 答复: [Qt-interest] QMultiHash Hi 1. QmultiHash replace() is only replace first item, I want to replace all values when key is matched. Qt docs : if there are multiple items with the key, the most recently inserted item's value is replaced with value. Who have a better method? 2. so I need to use Qmap<long,Qstring>, I found qt source code below, so I think Qhash<long,Qstring> is ordered by long, am I right? inline uint qHash(long key) { return qHash(ulong(key)); } template <class T> inline uint qHash(const T *key) { return qHash(reinterpret_cast<quintptr>(key)); } Thanks Ken ________________________________ 发件人: Danny Koppel [mailto:[email protected]] 发送时间: 2013年3月7日 17:39 收件人: 'pengliang(??)'; [email protected]<mailto:[email protected]> 主题: RE: [Development] [Qt-interest] QMultiHash Hello, I don’t know if I understand you correctly but the QMultiHash class has the function replace which does what you describe. It replaces the value of an existing key or creates a new one if the key doesn’t exist yet. About point 2: the documentation describes it as follows: “When iterating over a QMap<qthelp://org.qt-project.qtcore.501/qtcore/qmap.html>, the items are always sorted by key. With QHash, the items are arbitrarily ordered.”. Kind regards, Danny Van: [email protected]<mailto:[email protected]> [mailto:[email protected]] Namens pengliang(??) Verzonden: donderdag 7 maart 2013 10:25 Aan: [email protected]<mailto:[email protected]> Onderwerp: [Development] [Qt-interest] QMultiHash Hi All QMultiHash<Qstring,int>hh; I need to find some key and change their values. I found If I use QmutableHashIterator<Qstring,int>it , its bool findNext<qmutablehashiterator.html#findNext> ( const T & value ) Its parameter is a value, not a key. So I need to : While(it.hasNext()) { It.next(); If(it.key() == ikey) { It.setValue(ivalue); } } I must to check every item? Who have a better method? 2. Qhash: Some books said Qhash is unorderred? But I test it. Qhash<Qstring,int>hh; I insert some string, and loop the hash by QhashIterator, I found the string is orderred. And I test it Qhash<int,Qstring>, and print key, and found they still orderred. Why books said it is unorderred? Thanks ken
_______________________________________________ Development mailing list [email protected] http://lists.qt-project.org/mailman/listinfo/development
