对cout的C ++内存地址[关闭]

问题描述 投票:-4回答:3

当我使用下面的代码时,我在对的第二项之前得到一个mem地址(?),如:666,0x6090e8667 666,0x6090e8667 666,0x6090e8667。

我究竟做错了什么?

std::vector<std::vector<std::vector<std::pair<int,int> > > > total;

int main()
{

  total.resize(10);
  for (int i = 0; i < 10; ++i)
    {
      total[i].resize(10);
    }

  for (int i = 0; i < 10; i++)
    {
      total[0][0].push_back(std::make_pair(666,667));
    }

  for (int i=0; i<3; i++)
    {
      std::cout << total[0][0][i].first << ", " <<
      std::cout << total[0][0][i].second << '\t';
    }
  std:: cout << std::endl;

}
c++ std-pair
3个回答
3
投票
std::cout << total[0][0][i].first << ", " <<
std::cout << total[0][0][i].second << '\t';

由于第一行末尾的<<,你将std::cout(在第二行)输出到cout,就像你输入std::cout << std::cout;一样。显然你的编译器有一个重载或转换,导致它显示一个内存地址(尽管它可能无法在其他编译器上编译)。

要么用分号代替,要么从第二行删除std::cout <<


0
投票

对于

std::cout << total[0][0][i].first << ", " <<

你可能意味着

std::cout << total[0][0][i].first << ", ";

0
投票

你用过std::cout << total[0][0][i].first << ", " <<。在行尾(并且没有分号)的额外<<最终将下一个std::cout输出到您的第一个std::cout语句中。

它的行为如下:std::cout << std::cout导致显示的地址。

你可能想用:std::cout << total[0][0][i].first << ", ";代替。

© www.soinside.com 2019 - 2024. All rights reserved.