当我使用下面的代码时,我在对的第二项之前得到一个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;
}
std::cout << total[0][0][i].first << ", " <<
std::cout << total[0][0][i].second << '\t';
由于第一行末尾的<<
,你将std::cout
(在第二行)输出到cout
,就像你输入std::cout << std::cout;
一样。显然你的编译器有一个重载或转换,导致它显示一个内存地址(尽管它可能无法在其他编译器上编译)。
要么用分号代替,要么从第二行删除std::cout <<
。
对于
std::cout << total[0][0][i].first << ", " <<
你可能意味着
std::cout << total[0][0][i].first << ", ";
你用过std::cout << total[0][0][i].first << ", " <<
。在行尾(并且没有分号)的额外<<
最终将下一个std::cout
输出到您的第一个std::cout
语句中。
它的行为如下:std::cout << std::cout
导致显示的地址。
你可能想用:std::cout << total[0][0][i].first << ", ";
代替。