據我瞭解,如果我不存儲指針,C++中的所有內容都會被複制,這可能導致性能不佳(忽略我的示例的簡單性)。所以我想我把我的對象存儲爲我的向量中的指針而不是字符串對象,這對性能更好嗎? (假設我有很長的字符串和很多)。C++向量和指針
當我嘗試遍歷我的字符串指針的向量的問題是我不能從中提取的實際值
string test = "my-name";
vector<string*> names(20);
names.push_back(&test);
vector<string*>::iterator iterator = names.begin();
while (iterator != names.end())
{
std::cout << (*iterator) << ":" << std::endl;
// std::cout << *(*iterator); // fails
iterator++;
}
見註釋行,我沒有問題,在接受字符串指針。但是,當我嘗試獲取字符串指針值我得到一個錯誤(我找不到什麼興奮的錯誤是,但程序只是失敗)。
我也嘗試存儲(迭代器)在一個新的字符串變量,但它沒有幫助?
@mads失敗?有例外嗎?不編譯?測試仍在範圍內? – Lou 2011-04-12 15:51:30
空指針和指向本地作用域變量的指針?難怪你有問題得到它們指向的實際值 – 2011-04-12 15:54:43
你是否對你的代碼進行了剖析並證明這是一個嚴重的問題?還是你在微觀優化prematureley? – 2011-04-12 15:57:25