有没有办法初始化对象的引用,然后在另一个对象上重新生成它而不会产生副本?我的意思是:
std::vector < int >& vec1 = someVector;
std::vector < int >& vec2 = someOtherVector:
if ( someCondition )
{
vec2 = someVector;//copying occurs here
vec1 = someOtherVector;
}
Run Code Online (Sandbox Code Playgroud)
相反,我想要的是作为vec2对if 的引用someOtherVector和vec1引用,而不是它们成为副本.不幸的是,有些东西:someVectorsomeCondition
if ( someCondition )
{
std::vector < int >& vec1 = someVector;
std::vector < int >& vec2 = someOtherVector;
}
else
{
std::vector < int >& vec1 = someOtherVector;
std::vector < int >& vec2 = someVector;
}
Run Code Online (Sandbox Code Playgroud)
由于引用的范围仅限于if和else …
使用此函数分配二维数组后:
char** make_matrix(int M, int N)
{
char** MAT = (char**)malloc(M * sizeof(char));
for (int i = 0; i < M; i++)
{
MAT[i] = (char*)malloc(N * sizeof(char));
}
return MAT;
}
Run Code Online (Sandbox Code Playgroud)
我发现试图free(M[0])导致断言失败.我能找到的关于释放2-d数组的所有内容都使用int而不是char.然而,char用int以上代替每一个,断言失败消失.为什么这样,我怎么能释放整个二维阵列?