how-to initialize 'const std::vector' like a c array

后端 未结 10 787
走了就别回头了
走了就别回头了 2020-11-27 02:59

Is there an elegant way to create and initialize a const std::vector like const T a[] = { ... } to a fixed (and small) number of val

10条回答
  •  一向
    一向 (楼主)
    2020-11-27 03:24

    Old question, but I ran into the same issue today, here's the approach that was most acceptable for my purposes:

    vector initVector(void)
    {
        vector initializer;
        initializer.push_back(10);
        initializer.push_back(13);
        initializer.push_back(3);
        return intializer;
    }
    
    int main()
    {
        const vector a = initVector();
        return 0;
    }
    

    Example to avoid excessive copying:

    vector & initVector(void)
    {
        static vector initializer;
        if(initializer.empty())
        {
            initializer.push_back(10);
            initializer.push_back(13);
            initializer.push_back(3);
        }
        return intializer;
    }
    
    int main()
    {
        const vector & a = initVector();
        return 0;
    }
    

提交回复
热议问题