gpt4 book ai didi

c++ - 我们可以发送一对模板参数给另一对吗

转载 作者:行者123 更新时间:2023-11-30 03:36:33 25 4
gpt4 key购买 nike

我们可以在 C++ 中使用 pair 作为另一个 pair 的参数吗?

这是一个测试程序。

#include <iostream>
#include <utility>

int main()
{
std::pair<int,int> m;
m=std::make_pair(1,3);
int r = 3;
int *q = &r;
int **p =&q;
int **t = p;
std::pair<int**,<std::pair<int,int> > > i(p,m);
std::cout<<i[t];

return 0;
}

这是我遇到的错误。

Test.cpp: In function ‘int main()’:
Test.cpp:12:45: error: template argument 2 is invalid
std::pair<int**,<std::pair<int,int>>> i(p,m);
^

如果我改变声明的格式,按照下面的方式编写程序,

#include <iostream>
#include <utility>

int main()
{
std::pair<int,int> m;
m=std::make_pair(1,3);
int r = 3;
int *q = &r;
int **p =&q;
int **t = p;
std::pair<
int**,
<
std::pair<
int,
int
>
>
> i(p,m);
std::cout<<i[t];

return 0;
}

还有一个错误。

Test.cpp: In function ‘int main()’:
Test.cpp:20:7: error: template argument 2 is invalid
> i(p,m);
^
Test.cpp:20:14: error: expression list treated as compound expression in initializer [-fpermissive]
> i(p,m);

可能是什么问题以及如何解决?


附带说明一下,我编写了一个程序,并在 Windows 7 机器上的一个非常古老的 Dev-c++ 编译器中编译了它,该编译器使用了与上述类似的代码,并且运行得非常好。这是我大学里的一个实验室程序,只有那个编译器。

上面的代码,我使用 GNU g++ 5.4.0 在 Windows 7 和 Ubuntu 16.04 上运行

Ideone: Link to the actual program for reference

您也可以查看我在上面的链接中遇到的实际错误。

最佳答案

这是不正确的:

std::pair<int**,<std::pair<int,int> > > i(p,m);

只需删除多余的 <> :

std::pair<int**, std::pair<int,int > > i(p,m);

此外,我不确定您要在 cout 中尝试做什么部分,但是 pair没有 []运算符(operator)。您可以使用 first 访问元素和 second :

i.first
i.second
i.second.first
i.second.second

您可能还对 std::tuple 感兴趣如果您不想将一对嵌套到另一对中:

std::tuple<int**, int, int> i;

关于c++ - 我们可以发送一对模板参数给另一对吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40616704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com