【发布时间】:2020-03-17 22:50:46
【问题描述】:
我正在学习向量,但遇到了一个问题,即使用指向字符串的指针创建项目向量时遇到了挑战
vector<string*> items;
我正在尝试通过以下函数的引用传递列表来添加项目:
void add_item(vector<string*> &items) {
string thing;
cout << "Add this item: ";
cin >> thing;
string* ptr = &thing;
items.push_back(ptr);
return;
}
然后使用以下命令显示所有项目:
void display(vector<string*> items) {
for (int i = 0; i <= items.size(); i++) {
cout << "> " << *items[i] << "\n";
}
return;
}
但这似乎不起作用,屏幕上没有输出,然后程序随机终止。我在这里做错了什么?
【问题讨论】:
-
您可能不想要指向字符串的指针向量。您可能需要一个字符串向量。除非您使用一些多态对象,否则您不需要任何类型的指针向量。
-
@AdrianMole 那是我的错,我在输入问题时不小心这样做了。刚刚进行了编辑。
-
@Ron 我也是这么想的,但这就是问题所暗示的
-
@dankpenny 附带说明一下,您的
display()循环超出了vector的范围。它需要使用<而不是<=,并且应该使用vector<string*>::size_type(通常是size_t)而不是int。