如何初始化C++的static Vector 类型的变量

 我来答
百度网友e096309
2017-05-24 · TA获得超过1327个赞
知道小有建树答主
回答量:501
采纳率:96%
帮助的人:415万
展开全部

static类型有三种,一种是全局变量(默认自带static修饰),一种是函数里的局部变量,一种是静态类成员变量。这几种可以简单的利用vector的一种构造函数,传入begin和end:

#include <iostream>
#include <vector>
using namespace std;

//辅助函数,打印数组
void print(vector<int> & vec) {
for(size_t i=0; i<vec.size(); i++) {
        cout << vec[i] << " ";
    }
    cout << endl;
}

//全局变量
int gArr[] = {1,2,3,4,5,6};
int gArrSize = sizeof(gArr) / sizeof(gArr[0]);
vector<int> gVec(gArr, gArr+gArrSize);

//局部静态变量
void func() {
    static int arr[] = {-1,-2,-3,-4,-5,-6};
    static int arrSize = sizeof(arr) / sizeof(arr[0]);
    static vector<int> vec(arr, arr+arrSize);
    print(vec);
}

//类静态成员变量
class A {
public:
    static vector<int> vec;
};
int gArr1[] = {6,5,4,3,2,1};
int gArrSize1 = sizeof(gArr) / sizeof(gArr[0]);
vector<int> A::vec(gArr1, gArr1+gArrSize1);

int main() {
    print(gVec);
    func();
    print(A::vec);

    return 0;
}

当然,在c++11里,有了初始化列表之后,上面那些都是浮云:

#include <iostream>
#include <vector>
using namespace std;

//辅助函数,打印数组
void print(vector<int> & vec) {
for(int x: vec) {
        cout << x << " ";
    }
    cout << endl;
}

//全局变量
vector<int> gVec{1,2,3,4,5,6};

//局部静态变量
void func() {
    static vector<int> vec{-1,-2,-3,-4,-5,-6};
    print(vec);
}

//类静态成员变量
class A {
public:
    static vector<int> vec;
};
vector<int> A::vec{6,5,4,3,2,1};

int main() {
    print(gVec);
    func();
    print(A::vec);

    return 0;
}
arongustc
科技发烧友

2017-05-24 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:6009万
展开全部
vector className::myvector;这样就可以吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5a686d7da5
2017-05-24 · 超过105用户采纳过TA的回答
知道答主
回答量:262
采纳率:0%
帮助的人:65.8万
展开全部
编译器相关
请用函数控制初始化
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式