在下面的程序中,一個字符串被添加到一個空的商店。然後這個存儲元素的地址被存儲在指針's1'中。然後添加另一個字符串,並以某種方式導致指向原始元素的指針失敗。字符串和商店
#include <iostream>
#include <string>
#include <vector>
class store2
{
public:
void add(std::string s) {words.push_back(s); last_added2 = &words.at(words.size() - 1);}
std::string* last_added() {return last_added2;}
private:
std::string* last_added2;
std::vector<std::string> words;
};
void main()
{
store2 store;
store.add("one");
std::string* s1 = store.last_added();
std::cout<<*s1<<std::endl;
store.add("two");
std::cout<<*s1<<std::endl; // crash
}
它不需要是std :: vector,並且許多std :: vectors功能不是必需的,但它確實需要調整大小,並且元素確實需要可靠地尋址。 – alan2here 2011-01-27 15:49:10
如果你不需要隨機訪問,你可以使用`std :: list` – peoro 2011-01-27 15:50:45
是否可以訪問列表中最近添加的項目,並保留個別元素的地址? – alan2here 2011-01-27 15:52:32