向量的大小在传递给函数后会发生变化
Size of vector changes after passing to a function
我正在研究一个向量,它是我代码的最终输出。我发现的是,即使我没有向其添加任何元素,在将其传递给函数之前和之后,向量大小也是不同的。我正在通过引用传递向量。有问题的函数NM_sim,我无法调试为什么会发生这种情况。感谢您的时间和帮助!我正在跟踪向量传递给函数NM_sim之前和之后的大小。调用NM_sim后,矢量的大小会发生变化。这是我代码的一部分:
state_type被描述为 std::vector
random_select(gene_ind, n_ka_temp, n_kd_temp, kavec_pert, kdvec_pert, kaval_pert, kdval_pert);
state_type param_pert;
param_pert.push_back(param[0]);
param_pert.push_back(param[1]);
param_pert.push_back(param[2]);
param_pert.insert(param_pert.end(),kaval_pert.begin(),kaval_pert.end());
param_pert.insert(param_pert.end(),kdval_pert.begin(),kdval_pert.end());
transform(param_pert.begin(),param_pert.end(),param_pert.begin(),powof10());
cout << "########## Value of param size is: " << param.size() << " ################" << endl;
MC_sim ( x_d, t_d, mean_xd, fex_nm, jex_nm, gene_ind, n_ka_temp, n_kd_temp, error_pert, param_pert);
for (int i = 0; i < param.size(); i++)cout << "########## Value of param from MC is: " << param[i] << " ################" << endl;
cout << "########## Value of param size is: " << param.size() << " ################" << endl;
cout << "The optimized value of error from MC calculation is: " << error_pert << endl;
NM_sim( x_d, t_d, mean_xd, fex_nm, jex_nm, gene_ind, n_ka_temp, n_kd_temp, error_pert, param_pert);
cout << "The optimized value of error from NM calculation is: " << error_pert << endl;
NM_sim内部:
void NM_sim( const state_type &x_d, const state_type &t_d, const state_type &mean_xd, myFex_single &fex_nm, myJex_single &jex_nm, const int &gene_ind, const int nka, const int nkd, double &error_ode, state_type ¶m)
{
const int param_size = 3 + nka + nkd;
cout << "########## Value of error from MC is: " << error_ode << " ################" << endl;
cout << "########## Value of param size is: " << param.size() << " ################" << endl;
for (int i = 0; i < param.size(); i++)cout << "########## Value of param from MC is: " << param[i] << " ################" << endl;
....
}
我得到的输出是:
########## Value of param from MC is: 0.789519 ################
########## Value of param from MC is: -0.47315 ################
########## Value of param from MC is: -0.693194 ################
########## Value of param from MC is: 0.368322 ################
########## Value of param from MC is: 0.298118 ################
########## Value of param from MC is: 0.883191 ################
########## Value of param size is: 6 ################
The optimized value of error from MC calculation is: 0.000329494
########## Value of error from MC is: 0.000329494 ################
########## Value of param size is: 13 ################
########## Value of param from MC is: 0.789519 ################
########## Value of param from MC is: -0.47315 ################
########## Value of param from MC is: -0.693194 ################
########## Value of param from MC is: 0.368322 ################
########## Value of param from MC is: 0.298118 ################
########## Value of param from MC is: 0 ################
########## Value of param from MC is: 0 ################
########## Value of param from MC is: 0.883191 ################
########## Value of param from MC is: 0 ################
########## Value of param from MC is: 0 ################
########## Value of param from MC is: 0 ################
########## Value of param from MC is: 0 ################
########## Value of param from MC is: 0 ################
矢量大小从 MC_sim 后的 6 变为 13 我传递给 NM_sim。关于如何解决它的任何想法或意见,不胜感激!谢谢!
您的param_pert
和param
大小比较。这两个不是相同的向量。
cout << "..." << param.size() << "..." << endl;
MC_sim ( x_d, t_d, mean_xd, fex_nm, jex_nm, gene_ind, n_ka_temp, n_kd_temp, error_pert, param_pert)
尝试:
cout << "########## Value of param size is: " << param_pert.size() << " ################" << endl;
第一步:消除除来回传递之外的所有代码。 你还有问题吗? 如果不是,则问题出在您的函数代码中。 如果问题仍然存在,那么至少你知道是传递导致了你的问题。
相关文章:
- 为什么向量内部的指针在从函数返回时会发生变化?
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- 为什么使用默认构造函数"{}"而不是"= default"存在性能变化?
- 当对象传递给成员函数时,成员函数的行为会发生变化?
- C 变化函数语法
- 派生类中函数参数变化的虚函数按常量类型在"function parameter"会破坏虚拟机制吗?
- 整数变量的值在传递给 c++ 中的函数后发生变化
- 为什么值会发生变化,尽管函数被定义为常量
- 将模板变化函数及其参数传递到一个函数
- 这个树搜索功能让我发疯.它返回 NULL,但不知何故主函数中的值发生了变化
- 当在函数内部使用静态变量时,输出会发生变化,该函数在c++中返回引用
- C 传递功能,将参数数量变化为参数到其他函数
- C/C 中POW()函数的实现是否随平台或编译器而变化
- C++:数组的大小在传递给函数后发生变化
- 链表头指针在传递给函数c++时发生变化
- 函数输入变化
- 为什么我的向量在通过构造函数传递后会发生变化
- 由于在 g++ 4.4.7 的 std::vector 中使用内联函数而导致精度变化C++ 32 位20120313
- 在递归函数中打印一次变量,该变量会随着每次递归而不断变化
- 成员函数的可访问性似乎随 SFML 中的范围而变化,C++ Xcode 中也是如此