请教,关于静态 vector 的使用。

时间:2021-11-27 04:18:30
今日写了一个小程序,想看看静态对象的特性,代码如下:
#include <vector>
#include <iostream>

using namespace std;

void display()
{
cout << int_vec[0] << endl;
}

int main()
{
static vector < int > int_vec;

int_vec.push_back(1);
display();
return 1;
}

据:书介绍,局部静态对象所处的内存空间,即使在不同的函数调用过程中,依然持续存在。

但是在上述程序中,编译器总是提示 “error C2065: 'int_vec' : undeclared identifier”

不知在下错在哪了,还请大家帮着看看!

谢谢!!

8 个解决方案

#1


"局部静态对象所处的内存空间,即使在不同的函数调用过程中,依然持续存在"
但是在相同作用域中啊,
int_vec不在display()的作用域中!

#2


是存在的。不过只是在那个main函数中是可以用的。其它的地方是不行的。

#3


int_vec还没定义就使用,当然编译通不过了。
建议楼主好好把基础补一下

#4


虽然它是静态的。可是你定义的是一个局部问题呀。

#5


#include <vector>
#include <iostream>

using namespace std;

static vector < int > int_vec;

void display()
{
cout << int_vec[0] << endl;
}

int main()
{
int_vec.push_back(1);
display();
return 1;
}
That's just you want

#6


#include <iostream>
using namespace std;
int staticCount()
{   static int count=0;
    return ++count;
}
int Count()
{   int count=0;
    return ++count;
}
void main()
{
  for(int i=0;i<10;++i){
   cout<<staticCount()<<' '<<Count()<<endl;
  }
}
答案是:
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
静态vector和静态int的含义,用法一样。

#7


不要把静态变量的内存分配方式和作用域弄混了。局部变量,不管是不是静态的,在作用域之外都不可见。静态的局部变量,只是说这个变量会一直存在,每次函数调用,操作的都是同一个变量而已。

#8


谢谢大家!!小弟懂了!!!! ^_^

#1


"局部静态对象所处的内存空间,即使在不同的函数调用过程中,依然持续存在"
但是在相同作用域中啊,
int_vec不在display()的作用域中!

#2


是存在的。不过只是在那个main函数中是可以用的。其它的地方是不行的。

#3


int_vec还没定义就使用,当然编译通不过了。
建议楼主好好把基础补一下

#4


虽然它是静态的。可是你定义的是一个局部问题呀。

#5


#include <vector>
#include <iostream>

using namespace std;

static vector < int > int_vec;

void display()
{
cout << int_vec[0] << endl;
}

int main()
{
int_vec.push_back(1);
display();
return 1;
}
That's just you want

#6


#include <iostream>
using namespace std;
int staticCount()
{   static int count=0;
    return ++count;
}
int Count()
{   int count=0;
    return ++count;
}
void main()
{
  for(int i=0;i<10;++i){
   cout<<staticCount()<<' '<<Count()<<endl;
  }
}
答案是:
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
10 1
静态vector和静态int的含义,用法一样。

#7


不要把静态变量的内存分配方式和作用域弄混了。局部变量,不管是不是静态的,在作用域之外都不可见。静态的局部变量,只是说这个变量会一直存在,每次函数调用,操作的都是同一个变量而已。

#8


谢谢大家!!小弟懂了!!!! ^_^

相关文章