0
我有以下代碼C++壽命內置集合
void my_func() {
std::vector<std::string> all_strings;
for (int i = 0 ; i < 10 ; i++) {
// "loop a"
all_strings.push_back(std::to_string(i));
}
for (const std::string& str : all_strings) {
// "loop b"
std::cout << str << std::endl;
}
}
我創建的串,並將它們分爲「環路」中的向量。問題是,我是否可以在「循環b」中訪問這些向量值,其中「循環a」中本地創建的對象和內部對象已經消失。
換句話說,字符串是否被值複製到「循環a」中的向量中?
'std :: to_string(i)'返回一個臨時的,所以從C++ 11開始一個移動將被執行,而不是一個副本。這並不重要,因爲小字符串優化會破壞性能增益,但在更復雜的示例中它可能會發生。 – nwp