小编luc*_*eon的帖子

使用模板化运算符<<输出一个集合的集合

我想通过操作符<<调用一次外部集合来输出集合的集合(在这种情况下为向量的向量)

当我' 'operator<<()函数中删除the时,它可以工作,但是我希望每行的每个输出元素之间都有一个空格。我尝试用(也包括字符串头文件)替换' '" "但得到相同的错误。

有办法解决吗?

#include <iostream>
#include <vector>

using namespace std;

vector<vector<bool>> lookup(10, vector<bool>(10, true));

template <typename T>
ostream& operator<< (ostream& out, const T& collection)
{
    for (const auto& elem : collection)
        out << elem << ' ';
    return out << endl;
}

int main()
{
    cout << lookup << endl;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

1>------ Build started: Project: test, Configuration: Debug Win32 ------
1>test.cpp
1>c:\users\user\source\repos\codechef\practice\beginner\test\test\test.cpp(16): error C2593: 'operator <<' is ambiguous …
Run Code Online (Sandbox Code Playgroud)

c++ templates vector output

2
推荐指数
1
解决办法
45
查看次数

根据模板参数的类型返回值

我有一个工作的双向映射(一对一映射)类,如下所示:

template <typename T1, typename T2>
class BiMap
{
public:
    void insert(const T1& a, const T2& b);
private:
    std::map<T1, T2*> map1_;
    std::map<T2, T1*> map2_;
};
Run Code Online (Sandbox Code Playgroud)

我已经能够实现该insert功能。现在我想实现一个retrieve功能,例如,如果用户通过类型的值T1比如说t1,它会返回*map1_[t1],同样如果他们通过类型的值T2比如说t2,它会返回*map2_[t2]。可以保证类型T1不会与类型相同,T2因此如何通过检查类型来使其返回值?

c++ templates

2
推荐指数
1
解决办法
55
查看次数

标签 统计

c++ ×2

templates ×2

output ×1

vector ×1