Pip*_*ppi 0 c++ containers vector
我有一个函数,可以在向量容器中存储素数列表.在每次调用函数时,容器大小保持不变或增长.
bool prime(int n)
{
...
static vector<int> v;
vector <int>::iterator Iter;
...
v.push_back(n);
}
int main()
{
int num = 0;
for (int i = 2; i <= n; ++i) {
if (prime(i)) {
++num;
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么存储在示例中有效.这个程序是否依赖?
它起作用,因为变量是静态的:
static vector<int> v;
// ^^^^^^
Run Code Online (Sandbox Code Playgroud)
当你在函数中声明这样的变量时,它意味着变量存在于函数调用之间.
从技术上讲,这是一个"静态存储持续时间"(SSD)对象.这些对象与程序一样长.大多数SSD对象是在调用main()之前创建的.但是在函数静态变量的情况下,它们不会在第一次调用函数之前创建.
| 归档时间: |
|
| 查看次数: |
93 次 |
| 最近记录: |