c++ - Passing 2D vector by reference -
i haven't touched c++ while , encountered weird problem when passing 2d vector referrence, it's described in main function:
class solution { public: vector<vector<int> > permute(vector<int> &num) { vector<vector<int> > result; //i intentionally omit codes permutation, //only pushing original 1 result result.push_back(num); return result; } //print permutation, want pass referrence void printperm(vector<vector<int> > &result) { for(int i=0; i<result.size(); i++) { for(int j=0; j<result[i].size(); j++) { cout << result[i][j]<<" "; } } } }; int main() { vector<int> old; old.push_back(1); old.push_back(2); old.push_back(3); solution sol; //this gives me error no matching function //call, candidate argument doesn't match sol.printperm((sol.permute(old))); //but 1 below works! vector<vector<int> > result = sol.permute(old); sol.printperm(result); }
you need add const result allow binding rvalue
void printperm(const vector<vector<int> > &result) // ^^^^^^
Comments
Post a Comment