【问题标题】:C++ STL transformC++ STL 转换
【发布时间】:2015-10-09 09:54:37
【问题描述】:

我尝试使用 c++ stl 库。 我想将字符串向量转换为 int、string 的映射。

例如:一个看起来像这样的向量:

const char *vinit[] = { "Sunday", "Monday", "Tuesday", "Wednesday" };
vector <string> v(vinit, end(vinit));

会变成这样的地图:

    map<int, string> map = {{ 1, "Sunday" },
                            { 2, "Monday" },
                            { 3, "Tuesday" },
                            { 4, "Wednesday" } };

关键是我不能使用任何循环和全局索引作为整数。

【问题讨论】:

    标签: string dictionary vector int


    【解决方案1】:

    [编辑] 您可以为此使用map::insert

    const char *vinit[] = { "Sunday", "Monday", "Tuesday", "Wednesday" };
    vector <string> v(vinit, end(vinit));
    std::map<int,string> map;
    for(int i = 0; i < v.size(); i++)
    {
        map.insert (std::pair<int,string>(i+1,v[i]));
    }
    

    【讨论】:

    • 谢谢,但这不是我想知道的,它只是一个例子。我想在运行时做,而不是硬编码。
    • 不能使用循环,你有别的解决办法吗?
    • 为什么不能使用循环?如果你想避免循环,解决方案是明确表示:int i = 0; map.insert(std::pair&lt;int,string&gt;(i+1, v[i])); i++; if(i&lt;v.size()){ //continue} else {//break}
    • 没有像transform这样的ant stl算法可以在这里提供帮助吗?
    • 你能声明第二个向量吗?或者声明一个 std::pair 的向量?
    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 2021-10-07
    相关资源
    最近更新 更多