新手的问题,我写了这个功能约指针STL
vector<long int>* randIntSequence(long int n) {
vector<long int> *buffer = new vector<long int>(n, 0);
for(long int i = 0; i < n; i++)
buffer->at(i);
long int j; MTRand myrand;
for(long int i = buffer->size() - 1; i >= 1; i--) {
j = myrand.randInt(i);
swap(buffer[i], buffer[j]);
}
return buffer;
}
,但是当我把它从主,将myvec = randIntSequence(10),我看到了myvector总是空的。我应该修改返回值吗?
一个人不应该用`new`来分配标准容器 - 这种做法会让人失望!另外,你的第一个`for`循环是无操作的。 – 2011-01-11 23:54:34
这种设计看起来很可疑。你为什么动态地分配`vector`?是否有一个特定的原因,你不是只是在堆栈上创建它并返回它?随机数生成器能抛出异常吗?你有没有考虑过使用智能指针? – 2011-01-11 23:55:25
是的,我忘了将i分配给缓冲区的第i个元素。我的问题没有指针是这样的:如果我想在某个点上删除矢量,在函数外面,它会被完全删除吗? – Bob 2011-01-12 00:07:45