二进制表达式的操作数无效(&#39; std :: __ 1 :: basic_ostream <char>&#39;和&#39; ostream&#39;(又名&#39; basic_ostream <char>&#39;))std ::法院&LT; <检查<<的std :: COUT;

时间:2015-10-03 00:15:28

标签: c++ c++11 vector

=“”

我试图解决标准面试问题。我是一个向量,其中每个元素都是整数的向量。 V [0]是员工0,v [0]中的int向量是向他报告的员工数量,比如2,3,5。现在,如果v [2]有7,那么间接7个报告给员工0到2.问题是找到一个函数,它接受两个整数a和b以及依赖向量,并说明是否直接或间接向b报告。

这是BFS逻辑

bool dependencyList(int a, int b, std::vector<std::vector<int>>& v){

    std::queue<int> Q;
    std::vector<int> D;
    std::unordered_map<int, int> M;

    for(auto it = v[b].begin(); it!= v[b].end(); it++){
        Q.push(*it);
        D.push_back(*it);
        M[*it] = 1;

    }
    while(!Q.empty()){
        int num = Q.front();
        for(auto it = v[num].begin(); it != v[num].end(); it++){
            if(M.find(*it) == M.end()){
                D.push_back(*it);
                M[*it] =1;
                Q.push(*it);
            }
        }
        Q.pop();
    }

    for(auto it= D.begin(); it!= D.end(); it++){
        if(*it == a) return true;
    }
    return false;

}

这是驱动程序代码

int main() {

    std::vector<int> v0;
    v0.push_back(2);
    v0.push_back(3);
    v0.push_back(7);

    std::vector<int> v1;
    v1.push_back(4);
    v1.push_back(9);
    v1.push_back(11);

    std::vector<int> v2;
    v2.push_back(3);
    v2.push_back(5);

    std::vector<int> v3;
    v3.push_back(8);
    v3.push_back(6);

    std::vector<std::vector<int>> v;
    v.push_back(v0);
    v.push_back(v1);
    v.push_back(v2);
    v.push_back(v3);

    bool check = dependencyList(6,0,v);

    std::cout<<check<<std::cout;

    return 0;
}

这是我得到的错误

invalid operands to binary expression ('std::__1::basic_ostream<char>' and 'ostream' (aka 'basic_ostream<char>'))
    std::cout<<check<<std::cout;
    ~~~~~~~~~~~~~~~~^ ~~~~~~~~~

1 个答案:

答案 0 :(得分:0)

尝试从表达式std::cout;中删除std::cout<<check<<std::cout;如果使用GNU g ++编译器编译此代码,则编译正常。但是如果你使用visual c ++编译器编译它(c ++ 11这是我测试过的)它就会出错。

使用g ++编译器,它显示对象std::cout的地址。因此,如果您想显示地址,请尝试std::cout<<check<<&std::cout;