通过引用传递空的或未初始化的STL容器

时间:2012-08-08 10:39:20

标签: c++ stl

通过引用将空的或未初始化的STL容器传递给函数是否总是安全的? e.g。

void some_function(deque<string> &passed_by_ref) {

passed_by_ref.push_back("a string");

}

int main() {

deque<string> some_data;

some_function(some_data);

return 0;

}

我对这种方法没有任何问题,但不确定是否可能存在任何NULL引用问题。

3 个答案:

答案 0 :(得分:3)

是的,它总是安全的。 deque<T>不是指针类型 - 它是一种对象类型。标准容器有一个默认构造函数,因此,在此语句之后

deque<string> some_data;

some_data是一个正确构造的空deque

答案 1 :(得分:2)

STL容器具有默认构造函数,在这种情况下调用它们:

deque<string> some_data;

因此容器已初始化,并且完全可以传递对它的引用

答案 2 :(得分:1)

该行

   deque<string> some_data; 

确保变量some_data至少初始化,因为调用了构造函数。

因此,您只是将引用传递给空的STL容器 - 这是安全的。