C++ 如何访问向量元素,其中向量映射为字符';键';在无序的地图上?

C++ 如何访问向量元素,其中向量映射为字符';键';在无序的地图上?,c++,c++11,vector,stl,unordered-map,C++,C++11,Vector,Stl,Unordered Map,我有一个无序的_图,其中键是字符,值是向量: 无序映射表 我正在尝试打印键及其值: for(unordered_map<char,vector<int> > ::const_iterator iter = table.begin(); iter != table.end(); ++iter) { cout<<iter->first<< "\t"; for(vector<int> :: const_iterator

我有一个无序的_图,其中键是字符,值是向量:
无序映射表

我正在尝试打印键及其值:

for(unordered_map<char,vector<int> > ::const_iterator iter = table.begin(); iter != table.end(); ++iter)
{
    cout<<iter->first<< "\t";
    for(vector<int> :: const_iterator iter1 = iter->second.begin(); iter1 != iter->second.end(); ++iter1)
    {
        cout<<(iter->second)[iter1];
    }
    cout<<"\n";
}
for(无序映射::常量迭代器iter=table.begin();iter!=table.end();++iter)
{
coutsecond.end();++iter1)
{

cout
运算符[]
需要类型为
std::vector::size\u type
的参数,因此不能使用
迭代器作为其参数。可以将循环更改为:

for (vector<int>::size_type i = 0; i < iter->second.size(); i++)
{
    cout<<(iter->second)[i];
}
for(vector::size_type i=0;isecond.size();i++)
{

cout要从迭代器中获取值,只需使用
*
解除对它的引用,就像使用指针一样。但是这里显式使用迭代器没有意义。只需使用基于范围的for循环即可

for(const auto& p : table)
{
    cout << p.first << "\t";
    for(const auto& i : p.second)
    {
        cout << i;
    }
    cout<<"\n";
}
for(const auto&p:table)
{

cout您可以如下更新代码以打印所有值

for(auto iter = table.begin(); iter != table.end(); ++iter)
{
    cout<<iter->first<< "\t";
    for(auto iter1 = iter->second.begin(); iter1 != iter->second.end(); ++iter1)
    {
        cout<<*iter1;
    }
    cout<<"\n";
}
for(自动iter=table.begin();iter!=table.end();++iter)
{
coutsecond.end();++iter1)
{

当您需要执行比“对范围内的每个元素执行X”更复杂的操作时,我们应该何时使用迭代器?@DharitParikh。
for(auto iter = table.begin(); iter != table.end(); ++iter)
{
    cout<<iter->first<< "\t";
    for(auto iter1 = iter->second.begin(); iter1 != iter->second.end(); ++iter1)
    {
        cout<<*iter1;
    }
    cout<<"\n";
}