Le spécificateur nosauf assure au compilateur que le Le constructeur de déplacement ne lève pas d'exceptions. En implémentant le constructeur de déplacement avec nosauf, comme le montre le code ci-dessous, le constructeur de déplacement sera invoqué lorsque le vecteur se développe :
A(A && rhs) noexcept {
std::cout << "i am the move constr" <<std::endl;
... some code doing the move ...
m_value=std::move(rhs.m_value) ; // etc...
}
Copier après la connexion
Cette approche s'aligne sur la norme C, qui nécessite des garanties d'exception strictes pour les opérations. effectuée par std::vector.
Pour une efficacité optimale, pensez à utiliser la méthode emplace_back au lieu de push_back, car elle évite les copies inutiles. Il convient de noter que les premières versions de Visual Studio 2015 et antérieures peuvent ne pas prendre en charge cette fonctionnalité, malgré la prise en charge de la sémantique de déplacement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!