我有以下代码:
#include <vector>
#include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
vector<int > vi;
for(int i=0; i<10; i++) {
int j=i*i;
vi.push_back(j);
}
for(int i=0; i<(int)vi.size(); i++)
cout<<vi[i]<<" ";
cout<<endl;
return 1;
Run Code Online (Sandbox Code Playgroud)
}
执行此代码将返回"0 1 4 9 16 25 36 49 64 81",但这对我来说并不直观.
据我所知,当变量在堆栈上分配时,变量在超出范围时被解除分配.我也知道C++ STL向量存储指向变量的指针.为什么尽管整数在堆栈上被分配并超出范围,但向量仍保持有效整数?由于整数被解除分配,矢量保持的指针不应该被取消吗?
我也知道C++ STL向量存储指向变量的指针.
不,标准容器存储值.的std::vector具有指向值的动态分配的内部阵列(在你的情况,int).
您ints被复制到向量中,这就是它工作的原因(没有值语义,容器在许多情况下将无法使用)
| 归档时间: |
|
| 查看次数: |
199 次 |
| 最近记录: |