内存超出范围向量

问题描述 投票:0回答:3

我正在编写此程序,为什么它在toupper('a')中引发错误?

void test2(void) {
  string n;
  vector<string> v;
  auto it = v.begin();
  do {
    cout << "Enter a name of a fruit: ";
    cin >> n;
    v.push_back(n);
  } while (n != "Quit");
  v.erase(v.end() - 1);
  sort(v.begin(), v.end(), [](string g, string l) { return g < l; });
  dis(v);

  for (auto i : v) {
    if (i.at(0) == toupper('a')) {
      cout << i << endl;
      v.erase(remove(v.begin(), v.end(), i));
    }
  }
  dis(v);
}

有人可以帮助我找到错误吗?

c++ vector stl
3个回答
4
投票

由于您已经尝试实现擦除删除惯用语,因此在这种情况下可以使用它:


3
投票

写这样的删除循环:


0
投票

这里的问题:

© www.soinside.com 2019 - 2024. All rights reserved.