我想通过操作符<<调用一次外部集合来输出集合的集合(在这种情况下为向量的向量)
当我' '从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) 我有一个工作的双向映射(一对一映射)类,如下所示:
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因此如何通过检查类型来使其返回值?