简体   繁体   English

g++:'类标准::map <int, std::vector<std::vector<int> &gt; &gt;' 没有名为 'insert_or_assign' 的成员</int,>

[英]g++: 'class std::map<int, std::vector<std::vector<int> > >' has no member named 'insert_or_assign'

Coding for a problem on leetcode.为 leetcode 上的一个问题编码。 I am using a std::map to link an int to a vector<vector<int>> .我正在使用std::map将 int 链接到vector<vector<int>> I checked the API on cppreference and am using the function std::map::insert_or_assign() to insert a key-value pair.我在cppreference上检查了 API 并使用 function std::map::insert_or_assign()插入键值对。 However upon compiling the code with g++ on windows 10 powershell terminal (editor-VSCode), I get the following output in the terminal. However upon compiling the code with g++ on windows 10 powershell terminal (editor-VSCode), I get the following output in the terminal.

PS C:\Users\vishw\Desktop\vsCode\p15_leetcode> g++ p15.cpp -o p15.exe
p15.cpp: In member function 'bool Solution::present(std::vector<std::vector<int> >&, std::vector<int>&)':
p15.cpp:75:19: error: 'class std::map<int, std::vector<std::vector<int> > >' has no member named 'insert_or_assign'
             store.insert_or_assign(arg_nums[0], v);

Why do I get this error?为什么我会收到此错误? C++ version issues? C++版本问题? Compiler issues?编译器问题? Kindly help!请帮忙! PFA below my code我的代码下方的 PFA

class Solution {
private:
    map<int, vector<vector<int>>> store;
public:
    vector<vector<int>> threeSum(vector<int>& arg_nums) {
        vector<vector<int>> vector_return;
        if (arg_nums.size() < 3) return vector_return;
        vector<int> holder;
        for (int index0 = 0; index0 < arg_nums.size() - 2; ++index0) {
            for (int index1 = index0 + 1; index1 < arg_nums.size() - 1; ++index1) {

                if (index1 != index0) {
                    for (int index2 = index1 + 1; index2 < arg_nums.size() - 0; ++index2) {

                        if ((index2 != index1)
                             && (index2 != index0)) {
                            
                            if (arg_nums[index2] + arg_nums[index1] + arg_nums[index0] == 0) {
                                holder = sort(arg_nums[index0], arg_nums[index1],
                                              arg_nums[index2]);
                                if (!present(vector_return, holder)) {
                                    vector_return.push_back(holder);
                                }
                            }
                        }
                    }
                }
            }
        }
        return vector_return;
    }

    vector<int> sort(int arg_num0, int arg_num1, int arg_num2) {
        vector<int> vector_return;
        if (arg_num0 > arg_num1) {
            vector_return.push_back(arg_num0);
            vector_return.insert(vector_return.begin(), arg_num1);
            if (arg_num2 > arg_num0) vector_return.push_back(arg_num2);
            else {
                if ((arg_num2 > arg_num1) && (arg_num2 <= arg_num0)) {
                    vector_return.insert(++vector_return.begin(), arg_num2);
                } else vector_return.insert(vector_return.begin(), arg_num2);
            }
        } else {
            vector_return.push_back(arg_num1);
            vector_return.insert(vector_return.begin(), arg_num0);
            if (arg_num2 > arg_num1) vector_return.push_back(arg_num2);
            else {
                if ((arg_num2 > arg_num0) && (arg_num2 <= arg_num1)) {
                    vector_return.insert(++vector_return.begin(), arg_num2);
                } else vector_return.insert(vector_return.begin(), arg_num2);
            }
        }
        return vector_return;
    }

    bool present(vector<vector<int>>& arg_gathered, vector<int>& arg_nums) {
        if (store.find(arg_nums[0]) == store.end()) {
            vector<vector<int>> v;
            v.push_back(arg_nums);
            store.insert_or_assign(arg_nums[0], v);
            return true;
        } else {
            map<int, vector<vector<int>>>::iterator iterator0 = store.find(arg_nums[0]);
            vector<vector<int>>::iterator iterator1 = (std::get<vector<vector<int>>>(*iterator0)).begin();
            while (iterator1 != std::get<vector<vector<int>>>(*iterator0).end()) {
                if (*iterator1 == arg_nums) return false;
                iterator1 = iterator1 + 1;
            }
            (std::get<vector<vector<int>>>(*iterator0)).push_back(arg_nums);
            return true;
        }
    }
};

This is a simple version issue, thank you acraig5075 for your help (comments below the question), code compiled successfully.这是一个简单的版本问题,感谢acraig5075的帮助(问题下方评论),代码编译成功。 Here is how you can specify the c++ version while compiling这是在编译时如何指定 c++ 版本的方法

g++ -std=c++17 your_program_name.cpp -o you_give_name.exe

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 flann / util / serialization.h类std :: unordered_map <unsigned int, std::vector<unsigned int> &gt;&#39;没有名为&#39;serialize&#39;的成员 - flann/util/serialization.h class std::unordered_map<unsigned int, std::vector<unsigned int> >' has no member named 'serialize' 向 std::vector 添加成员<std::vector<int> &gt; class 在 C++ </std::vector<int> - Adding a member to std::vector<std::vector<int>> class in C++ 插入std :: map的简短函数 <int, std::vector<int> &gt; - Short function to insert into a std::map<int, std::vector<int>> 带提示的std :: map :: insert_or_assign的复杂性 - Complexity of std::map::insert_or_assign with hint 在 std::map &lt; int , std::vector 中查找 vector 中元素的值<int > &gt; - Find a value of an element in vector in a std::map < int , std::vector <int >> 致命错误:“std::vector”中没有名为“find”的成员<int, std::allocator<int> &gt;'</int,> - fatal error: no member named 'find' in 'std::vector<int, std::allocator<int> >' 初始化一个std :: vector <std::vector<int> &gt;使用boost :: assign :: list_of - Initialise a std::vector<std::vector<int> > with boost::assign::list_of 复制std :: map <int, vector<int> &gt;到std :: map <std:string, vector<int> &gt; - copy std::map<int, vector<int>> to std::map<std:string, vector<int>> emplace_back不使用std :: vector <std::map<int, int> &gt; - emplace_back not working with std::vector<std::map<int, int>> 如何打印 std::map <int, std::vector<int> >?</int,> - How to print std::map<int, std::vector<int>>?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM