unordered_map 值对 c++
unordered_map pair of values c++
我正在尝试在 C++ 中使用 unordered_map
,这样,对于键,我有一个 int
,而对于值,有一对浮点数。但是,我不确定如何访问这对值。我只是想弄清楚这个数据结构。我知道要访问我们需要与此无序映射声明类型相同的 iterator
的元素。我尝试使用 iterator->second.first
和 iterator->second.second
。这是访问元素的正确方法吗?
typedef std::pair<float, float> Wkij;
tr1::unordered_map<int, Wkij> sWeight;
tr1::unordered_map<int, Wkij>:: iterator it;
it->second.first // access the first element of the pair
it->second.second // access the second element of the pair
感谢您的帮助和时间。
是的,这是正确的,但不要使用 tr1
,写 std
,因为 unordered_map
已经是 STL 的一部分。
像你说的那样使用迭代器
for(auto it = sWeight.begin(); it != sWeight.end(); ++it) {
std::cout << it->first << ": "
<< it->second.first << ", "
<< it->second.second << std::endl;
}
同样在 C++11 中,您可以使用基于范围的 for 循环
for(auto& e : sWeight) {
std::cout << e.first << ": "
<< e.second.first << ", "
<< e.second.second << std::endl;
}
如果您需要它,您可以像这样使用 std::pair
for(auto it = sWeight.begin(); it != sWeight.end(); ++it) {
auto& p = it->second;
std::cout << it->first << ": "
<< p.first << ", "
<< p.second << std::endl;
}
我正在尝试在 C++ 中使用 unordered_map
,这样,对于键,我有一个 int
,而对于值,有一对浮点数。但是,我不确定如何访问这对值。我只是想弄清楚这个数据结构。我知道要访问我们需要与此无序映射声明类型相同的 iterator
的元素。我尝试使用 iterator->second.first
和 iterator->second.second
。这是访问元素的正确方法吗?
typedef std::pair<float, float> Wkij;
tr1::unordered_map<int, Wkij> sWeight;
tr1::unordered_map<int, Wkij>:: iterator it;
it->second.first // access the first element of the pair
it->second.second // access the second element of the pair
感谢您的帮助和时间。
是的,这是正确的,但不要使用 tr1
,写 std
,因为 unordered_map
已经是 STL 的一部分。
像你说的那样使用迭代器
for(auto it = sWeight.begin(); it != sWeight.end(); ++it) {
std::cout << it->first << ": "
<< it->second.first << ", "
<< it->second.second << std::endl;
}
同样在 C++11 中,您可以使用基于范围的 for 循环
for(auto& e : sWeight) {
std::cout << e.first << ": "
<< e.second.first << ", "
<< e.second.second << std::endl;
}
如果您需要它,您可以像这样使用 std::pair
for(auto it = sWeight.begin(); it != sWeight.end(); ++it) {
auto& p = it->second;
std::cout << it->first << ": "
<< p.first << ", "
<< p.second << std::endl;
}