对 cout 的 C++ 内存地址
C++ memory addresses of pair cout
当我使用下面的代码时,我在这对的第二项之前得到了一个内存地址(?),如下所示:
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
,就好像您输入 [=14] =].显然你的编译器有一个重载或转换导致它显示一个内存地址(尽管它可能无法在其他编译器上编译)。
要么用分号替换它,要么从第二行中删除 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 << ", ";
相反。
当我使用下面的代码时,我在这对的第二项之前得到了一个内存地址(?),如下所示: 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
,就好像您输入 [=14] =].显然你的编译器有一个重载或转换导致它显示一个内存地址(尽管它可能无法在其他编译器上编译)。
要么用分号替换它,要么从第二行中删除 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 << ", ";
相反。