小编geo*_*ptr的帖子

如何使用c ++避免地图中的重复值

我正在尝试使用地图在cpp中编写程序...

我的目标是避免在地图中重复相同的值.

如果密钥相同,我们可以使用map来避免重复密钥.为了允许重复密钥,我们使用multimaps

如果值相同,我们如何避免?

我编写的程序允许重复值

typedef std::map<int, std::string> MyMap;

int main()
{
    MyMap map;
    MyMap::iterator mpIter;

    int key;
    string value;

    int count;
    for(count = 0; count < 3;count++)
    {
        cin >> key;
        cin >> value;

        std::pair<MyMap::iterator, bool> res = map.insert(std::make_pair(key,value));
    }

    for (mpIter=map.begin(); mpIter != map.end(); ++mpIter)
         cout  << " "  << (*mpIter).second << endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ c++11

6
推荐指数
2
解决办法
6410
查看次数

如果索引超出范围,如何从std :: tuple_element返回void?

我有一个函数traits结构,它使用std::tuple_element以下方法提供函数参数的类型:

#include <iostream>
#include <tuple>
#include <typeinfo>

template <typename T>
struct function_traits;

template <typename T_Ret, typename ...T_Args>
struct function_traits<T_Ret(T_Args...)> {
    // Number of arguments.
    enum { arity = sizeof...(T_Args) };
    // Argument types.
    template <size_t i>
    struct args {
        using type
            = typename std::tuple_element<i, std::tuple<T_Args...>>::type;
    };
};

int main() {
    using Arg0 = function_traits<int(float)>::args<0>::type;
    //using Arg1 = function_traits<int(float)>::args<1>::type; // Error, should be void.

    std::cout << typeid(Arg0).name() << std::endl;
    //std::cout << typeid(Arg1).name() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

工作示例:Ideone

如果索引i超出范围( …

c++ templates c++11 stdtuple

6
推荐指数
1
解决办法
288
查看次数

标签 统计

c++ ×2

c++11 ×2

stdtuple ×1

templates ×1