静态矢量调整大小

Static vector resize

本文关键字:调整 静态      更新时间:2023-10-16

我想在类中创建一个静态向量,并在创建向量时调整向量的大小。我尝试在构造函数或主函数中执行此操作。但我无法让它发挥作用。问题是,我不能用这种方式调用向量类的函数。这就是我现在拥有的:

#include <vector>
using namespace std;
class test
{
public:
    static vector<int> testvec;
    test();
};
test::test() //Not static
{
    test::testvec.resize(0);    //Try 1
}
vector<int> test::testvec.resize(0); //Try 2
int main()
{
    test::testvec.resize(0); //Try 3
    test testclass;

    system("pause");
    return false;
}

我需要处理每个对象中向量上的所有数据,这就是为什么我想使向量静态。

有人能帮我吗?谢谢

编辑:grammer。我尝试过的每个方法都会出现编译错误。

当您声明静态成员属性时,您还需要定义it:

class test {
public:
   static std::vector<int> v; // declaration
};
std::vector<int> test::v; // definition, note: no `static` here

您可以选择性地使用构造函数的大小,这将避免调整大小的需要:

std::vector<int> test::v( 10 ); // definition, create it with size==10

但如果您喜欢,您仍然可以从main调用resize:

int main() { 
   test::v.resize( 20 );
}

您需要在实现文件中定义静态成员。

类似于main.cpp:

vector<int> Test::testvec;
int main() {
 ...
}