Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “不可匹敌”;运营者–“;关于std::map的逆迭代器_C++_C++11_Stl_Iterator_Stdmap - Fatal编程技术网

C++ “不可匹敌”;运营者–“;关于std::map的逆迭代器

C++ “不可匹敌”;运营者–“;关于std::map的逆迭代器,c++,c++11,stl,iterator,stdmap,C++,C++11,Stl,Iterator,Stdmap,我有一个std::map,我试图以一种有效的方式将所有条目与所有其他条目进行比较。我的想法是,我将有一个嵌套的循环,其起始点位于当前循环之后 以下代码是我试图实现的一个示例: #include <iostream> #include <string> #include <map> int main(int argc, char* argv[]) { std::map<std::string, std::string> m; m["one"

我有一个
std::map
,我试图以一种有效的方式将所有条目与所有其他条目进行比较。我的想法是,我将有一个嵌套的循环,其起始点位于当前循环之后

以下代码是我试图实现的一个示例:

#include <iostream>
#include <string>
#include <map>

int main(int argc, char* argv[])
{
  std::map<std::string, std::string> m;
  m["one"]    = "a";
  m["two"]    = "b";
  m["three"]  = "c";
  m["four"]   = "d";
  m["five"]   = "e";
  m["six"]    = "f";
  m["seven"]  = "g";

  for (auto outerIterator = m.begin(); outerIterator != m.end(); ++outerIterator)
  {
    std::cout << outerIterator->second << std::endl;

    for (auto innerIterator = outerIterator + 1; innerIterator != m.end(); ++innerIterator)
    {
      std::cout << " > " << innerIterator->second << std::endl;
    }
  }

  return 0;
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
std::map m;
m[“一”]=“一”;
m[“两个”]=“b”;
m[“三”]=“c”;
m[“四”]=“d”;
m[“五”]=“e”;
m[“六”]=“f”;
m[“七”]=“g”;
对于(自动outiterator=m.begin();outiterator!=m.end();++outiterator)
{

std::cout second
std::map::iterator
不是随机访问的迭代器,因此它没有
运算符+(int)
。您可以解决此问题:

for (auto outerIterator = m.begin(); outerIterator != m.end(); )
{
    std::cout << outerIterator->second << std::endl;

    for (auto innerIterator = ++outerIterator; innerIterator != m.end(); ++innerIterator)
    {
      std::cout << " > " << innerIterator->second << std::endl;
    }
}
for(自动outiterator=m.begin();outiterator!=m.end();)
{
std::cout秒
for (auto outerIterator = m.begin(); outerIterator != m.end(); )
{
    std::cout << outerIterator->second << std::endl;

    for (auto innerIterator = ++outerIterator; innerIterator != m.end(); ++innerIterator)
    {
      std::cout << " > " << innerIterator->second << std::endl;
    }
}