当我使用基于范围的 for 循环两次迭代 astd::unordered_map
时,是否保证顺序相等?
std::unordered_map<std::string, std::string> map;
std::string query = "INSERT INTO table (";
bool first = true;
for(auto i : map)
{
if(first) first = false;
else query += ", ";
query += i.first;
}
query += ") ";
query += "VALUES (";
first = true;
for(auto i : map)
{
if(first) first = false;
else query += ", ";
query += i.second;
}
query += ");"
在上面的示例中,结果字符串应该是这种形式。因此,重要的是两次迭代的顺序相同。
INSERT INTO table (key1, key2, key3) VALUES (value1, value2, value3);
这在 C++ 中得到保证吗?