struct
很长一段时间以来,我一直想用而不是 来迭代 C++ 映射std::pair
。这样做的原因是我总是发现pair.first
和pair.second
有歧义
所以我尝试了这个代码:
map< string, int > wordCounts;
wordCounts[ "a" ] = 37;
wordCounts[ "the" ] = 10;
wordCounts[ "you" ] = 5;
struct WordCountPair {
string word;
int count;
WordCountPair( const pair<const string, int>& p ) :
word( p.first ), count( p.second ) { }
};
for( WordCountPair e : wordCounts ) {
printf( "%s occurred %d times\n", e.word.c_str(), e.count );
}
这种方法有效,但是复制成本有点高
有谁知道有什么方法可以做这样的事情而不发生复制吗?