c++ 如何显示我的模板向量对?

ehxuflar  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(89)
#include <iostream>
#include <ostream>
#include <vector>
using namespace std;

template <class T>
class Map {
public:
    vector <pair <T, T>> x;
    void emptyMap();
    insertPair(T, T);
    findKey();
    eraseKey();
    void display();
};

template <class T>
Map<T>::insertPair (T key, T val){ // val = value
    x.push_back(make_pair(key, val));
}

template <class T>
void Map<T>::emptyMap () {
    x.clear();
}

template <class T>

void Map<T>::display () {
    for (const auto &i : x){
       cout << i; //error here 
    }
}

int main () {
    Map <int> dx;
    dx.insertPair (1,2);
    dx.display();
}

尝试重新创建Map容器,用于研究目的。我不断收到这些错误:error文本中的错误:在'int Map::display()[T = int]的示例化中,此处需要(第41行)
错误:没有匹配的'operator〈〈'(操作数类型是'std::ostream {aka std::basic_ostream}'和'const std::pair')(第34行)

nkkqxpd9

nkkqxpd91#

默认情况下,ostreaming a std::pair没有重载。不过,编写自己的代码相当简单:

template<typename A, typename B>
std::ostream& operator<<(std::ostream& os, const std::pair<A,B>& pair){
    os << pair.first << ", " << pair.second; //one possible output format

    return os;
}

相关问题