这是我日常工作中的一段代码.我只想问你两种情况之间是否存在差异,特别是在性能方面.
std::vector< std::pair<std::string, std::string> > aVec;
// case 1
aVec.emplace_back("hello", "bonjour");
// case 2
aVec.emplace_back(std::pair("hello", "bonjour"));
Run Code Online (Sandbox Code Playgroud)
以下问题:
这两个案例的std :: list怎么样?
最近我对我的工作有一个疑问shared_ptr.这是代码.
for (const auto & aRef : aVec) {
THROW_RUNTIME_IFNULLPTR(aRef);
// do sth
}
Run Code Online (Sandbox Code Playgroud)
这是我同事的代码.在我看来,aRef是一个永远不会为空的引用.虽然我被告知(by auto &)aRef仍然是一个指针,所以它可能是空的.参考只是不增加计数器.我很困惑.
但是,应该是这样的
for (const auto & aRef : aVec) {
// THROW_RUNTIME_IFNULLPTR(aRef);
if ( aRef ) {
aRef->getX();
}
// do sth
}
Run Code Online (Sandbox Code Playgroud)
我错了吗?我不认为那aRef是一个指针.