所以对于这个例子,假设我有一个名为original的std :: vector,我想将它分成两半,分成两个不同的向量.假设原始元素数量均匀.
std::vector<int> firstHalf;
std::vector<int> secondHalf;
for (int i = 0, j = original.size()/2; i < original.size() / 2; i++, j++)
{
firstHalf.push_back(original[i]);
secondHalf.push_back(original[j]);
}
Run Code Online (Sandbox Code Playgroud)
更明显的方法是使用两个单独的for循环,一个用于填充firstHalf,另一个用于填充secondHalf.
正在编写for循环,就像我认为不好的做法一样吗?从我的测试来看,这个解决方案比两个单独的for循环更有效.
我是 C++ 新手,对内存泄漏很偏执。我将把代码精简为重要的部分:
如果我有一个这样的函数:
char * myString = "Discombobulate";
char * ToUppercase()
{
int length = strlen(myString);
char * duplicateString = new char [length];
strcpy(duplicateString, myString);
//char arithmetic to turn every letter in duplicateString to uppercase
return duplicateString;
}
Run Code Online (Sandbox Code Playgroud)
显然,我需要执行删除[]以避免内存泄漏。现在我想知道是否可以在 main() 中进行删除,如下所示:
int main () {
char * result = Upper();
std::cout << result << std::endl;
delete[] result;
}
Run Code Online (Sandbox Code Playgroud)
这能正常工作吗?这样做有什么问题吗?