通过引用将空的或未初始化的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引用问题。
答案 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容器 - 这是安全的。