0
我有一個std ::字符串集,我想迭代它們,但迭代器對於不同大小的集有不同的表現。下面給出的代碼片段,我的工作:std :: set :: iterator的大小是否有限制?
int test(set<string> &KeywordsDictionary){
int keyword_len = 0;
string word;
set<string>::iterator iter;
cout << "total words in the database : " << KeywordsDictionary.size() << endl;
for(iter=KeywordsDictionary.begin();iter != KeywordsDictionary.end();iter++) {
cout << *iter;
word = *iter;
keyword_len = word.size();
if(keyword_len>0)
Dosomething();
else
cout << "Length of keyword is <= 0" << endl;
}
cout << "exiting test program" << endl;
}
的代碼工作正常& *iter
被取消引用分配給word
&直到KeywordsDictionary
的大小約爲15000然而當KeywordsDictionary
的大小增加超過15000,
- 打印語句
cout << *iter;
是否能正確打印的KeywordsDictionary
所有內容。 - 但指向迭代器
*iter
的指針未被取消引用&未被指定爲word
。word
只是一個空字符串。
編輯:而程序的輸出是:
total words in the database : 22771
�z���AAAADAAIIABABBABLEABNABOUTACACCEPTEDACCESSACCOUNT...
Length of keyword is <= 0
exiting test program
所以基本上,我猜循環執行一次。
'的std ::設置 :: iterator'大小是固定的,在舉辦內容的大小'不管T'對象。 –
Chad
請提供一個演示問題的完整示例,從您實際編譯和運行的內容中進行復制和粘貼。 –
您在打印字符串('cout << * iter;')結束時似乎沒有換行符,因此所有字符串都將在同一行上依次打印?那是你看到的嗎? – rabensky