如何初始化C++的static Vector 类型的变量
3个回答
展开全部
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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询