0

通过引用将空的或未初始化的 STL 容器传递给函数总是安全的吗?例如

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 引用问题。

4

3 回答 3

3

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

deque<string> some_data;

some_data是一个正确构造的空deque

于 2012-08-08T10:40:52.767 回答
2

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

deque<string> some_data;

所以容器被初始化了,传递一个对它的引用是完全可以的

于 2012-08-08T10:40:44.713 回答
1

线

   deque<string> some_data; 

确保some_data在调用构造函数时至少初始化变量。

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

于 2012-08-08T10:42:23.363 回答