gpt4 book ai didi

c++ - 如何按长度从 std::vector 中删除元素(删除不起作用)

转载 作者:行者123 更新时间:2023-11-28 01:22:51 24 4
gpt4 key购买 nike

我给了一个 vector `

  vector<string> inputArray = { "aba","aa","ad","vcd","aba" };

我想返回这个 vector ,它只包含长度最长的字符串,在这种情况下我只想返回 {"aba","vcd","aba"} ,所以现在我想删除长度不等于最高的元素 `

vector<string> allLongestStrings(vector<string> inputArray) {

int length = inputArray.size();
int longstring = inputArray[0].length();
int count = 0;

vector<string> result;

for (int i = 0; i < length; i++)
{
if (longstring < inputArray[i].length())
{
longstring = inputArray[i].length();
}
count++;

}

for (int = 0; i<count;i++)
{
if (inputArray[i].length() != longstring)
{
inputArray[i].erase(inputArray.begin() + i);
count--;
i--;
}
}

return inputArray;

}

但我收到此错误 no instance of overloaded fucntion "std::basic_string<_Elem,_Traits,_Alloc>::erase[with_Elem=char,_Traits=std::char_traits<char>,_Alloc=std::allocator<char>]" matches the argument list"inputArray[i].erase(inputArray.begin()+i);这条线

怎么了?

最佳答案

还有其他问题,但这个特定的编译器消息告诉您这不是从字符串中删除特定字符的正确方法。

但是,阅读 OP 中的问题,我们看到您想从 vector 中删除一个字符串。要修复该特定错误,只需更改

inputArray[i].erase( /*character position(s) in the string*/ )

inputArray.erase( /*some position in the array*/ )

或者您可以修复它,以便它在由 inputArray[i] 表示的字符串中使用迭代器来实际删除该字符串中的字符,这当然不是您所说的您想做的。关键是,错误消息是因为你使用了错误的迭代器类型,因为你认为你正在使用一个 vector ,但实际上你告诉它使用你从 vector 中得到的字符串。

然后您将编译并遇到其他问题,这些问题已经在评论中得到很好的解决。

关于c++ - 如何按长度从 std::vector<string> 中删除元素(删除不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55300502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com