在下面的代码中,为什么在使用begin()时返回元素2而不是元素1?有人可以解释一下吗?
SELECT customer.customer_id AS Jancust_id,
SUM( payments.payment ) AS Jan_cust_pmts,
COUNT( DISTINCT customer.customer_id ) AS Jan_orig_cust,
AVG(payments.payment) as CustLifeRev
FROM telemon_payments_data payments
LEFT JOIN telemon_customer_data customer
ON payments.customer_id = customer.customer_id
WHERE DATE_FORMAT( customer.account_created_on, '%Y-%m' ) = '2016-01'
GROUP BY Jancust_id
在输出中我得到了
第一个元素是:查理第二个元素是2
答案 0 :(得分:5)
当您向map
添加项目时,它们会自动按键排序。这意味着地图按键的字母顺序存储您的项目。在这种情况下,Charlie
获得第一位,然后是David
,最后是Robert
。
如果您更改Charlie
的{{1}},则会先存储John
。我不完全确定你打算用这个做什么,但看起来你的数字应该是你的钥匙
答案 1 :(得分:1)
std::map
是一个已排序的容器。得到排序的值是std::pair< std::string, int >
类型。所以第一项是{"Charlie", 2}
对。恰好pair
的成员名为first
和second
。
所以std::pair< std::string, int >{"Charlie", 2}.first
是"Charlie"
,和
std::pair< std::string, int >{"Charlie", 2}.second
为2
。
first
和second
不是指map
的排序顺序。