【发布时间】:2013-02-09 15:32:49
【问题描述】:
我需要弄清楚这一点。使用下面的代码:
vector<unsigned long long int> getAllNumbersInString(string line){
vector<unsigned long long int> v;
string word;
stringstream stream(line);
unsigned long long int num;
while(getline(stream, word, ',')){
num = atol(word.c_str());
v.push_back(num);
}
return v;
}
此示例代码只是将输入字符串转换为存储在向量中的一系列 unsigned long long int。
在上面的这种情况下,如果我有另一个函数调用这个函数,并且我们在向量中似乎有大约 100,000 个元素,这是否意味着当我们返回它时,将创建一个新向量并且将创建相同的元素到函数中的那个,然后返回时会消除函数中的原始向量?到目前为止我的理解正确吗?
通常,我会以这样一种方式编写代码,即所有函数在涉及容器时都会返回指针,但是,在程序设计方面,根据我以上的理解,我们是否应该总是返回指针?来到容器?
【问题讨论】:
-
“当涉及到容器时,我们是否应该总是返回一个指针?” - 绝对不是。无论如何不要仅仅因为担心效率而引入动态分配,在 C++11 中更是如此。您是否需要动态生命周期。即使在 C++03 中,如果您不需要动态分配,引用参数也比返回动态分配的对象要好得多,而在 C++11 中,整个讨论仍然没有实际意义。
标签: c++ function return containers