Bob*_*Bob 1 c++ pointers stl vector
我写过这个函数
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;
}
Run Code Online (Sandbox Code Playgroud)
但是当我从main调用它时,myvec = randIntSequence(10),我看到myvector总是空的.我要修改返回值吗?
该swap
调用将*buffer
指针索引为好像它是一个数组并且在指针之间交换.你的意思是交换向量的项目.试试这个修改:
swap((*buffer)[i], (*buffer)[j]);
Run Code Online (Sandbox Code Playgroud)
除此之外,您的at
呼叫不会按预期设置值.您正在拉出矢量中的项目,但没有将它们设置为任何内容.尝试以下陈述之一:
buffer->at(i) = i;
(*buffer)[i] = i;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
328 次 |
最近记录: |