n********r 发帖数: 719 | 1 code是这样的
void func() {
vector > result;
for(int i=0; i
......
std::vector vec(M);
for (int j=0; j
vec[j] = tmp[j];
result.push_back(vec);
......
}
}
设置断点debug发现, 在第一次result.push_back(vec)之后
result的size由0变为1
但是result[0]是一个empty的vector
第二次push_back的时候程序就crash了
哪里出问题了呢? |
f*******t 发帖数: 7549 | 2 vec.push_back(tmp[j]);
★ 发自iPhone App: ChineseWeb 7.8
【在 n********r 的大作中提到】 : code是这样的 : void func() { : vector > result; : for(int i=0; i: : ...... : std::vector vec(M); : for (int j=0; j: vec[j] = tmp[j]; : result.push_back(vec);
|
n********r 发帖数: 719 | 3 这不对吧
之前vector vec(M)的时候已经把vec初始化为一个有M个0的vector了
这里如果用push_back,那相当于在M个0后面又放了M个元素,size变2M了
【在 f*******t 的大作中提到】 : vec.push_back(tmp[j]); : : ★ 发自iPhone App: ChineseWeb 7.8
|
f*******t 发帖数: 7549 | 4 http://stackoverflow.com/questions/11457571/how-to-set-initial-
只是reserve空间,vector还是空的。
【在 n********r 的大作中提到】 : 这不对吧 : 之前vector vec(M)的时候已经把vec初始化为一个有M个0的vector了 : 这里如果用push_back,那相当于在M个0后面又放了M个元素,size变2M了
|
b***i 发帖数: 3043 | 5 tmp呗。
请写出全部相关代码,在codepad.org上测试出错,然后贴链接。大部分情况,你自己
就发现哪里错了。
【在 n********r 的大作中提到】 : code是这样的 : void func() { : vector > result; : for(int i=0; i: : ...... : std::vector vec(M); : for (int j=0; j: vec[j] = tmp[j]; : result.push_back(vec);
|
t****t 发帖数: 6806 | 6 你看错了, 再看一下.
OP贴的这部分代码没什么问题, 问题一定在别处. 拿valgrind跑跑看.
【在 f*******t 的大作中提到】 : http://stackoverflow.com/questions/11457571/how-to-set-initial- : 只是reserve空间,vector还是空的。
|