gpt4 book ai didi

c++ - "String Iterators Incompatible"运行冒泡排序程序时的错误信息

转载 作者:太空宇宙 更新时间:2023-11-04 16:09:58 24 4
gpt4 key购买 nike

我是一名初学者,试图在 C++ 中对对象 vector 进行冒泡排序。我的目标是按每个对象元素的成员变量的成员变量对 vector 进行排序。所以最后,我希望所有 vector 元素的属性都相同,只是按不同的顺序排序。当我运行该程序时,我收到以下消息:

enter image description here

这是我的代码:

    void sortInventory(vector<Vehicle> &carList)
{
bool swap;
Vehicle temp;

do
{
swap = false;

for (int count = 0; count < carList.size(); count++)
{

transform(carList[count].getVIN().begin(), carList[count].getVIN().end(), carList[count].getVIN().begin(), ::tolower);

if (carList[count].getVIN() > carList[count + 1].getVIN())
{
temp = carList[count];
carList[count] = carList[count + 1];
carList[count + 1] = temp;
swap = true;
}
}

} while (swap);
}

这是我的类(class)声明:

class Vehicle
{
private:
string VIN;

public:
string getVIN();
void setVIN(string);

};

这是我的类实现:

string Vehicle::getVIN()
{ return VIN; }

void Vehicle::setVIN(string input)
{ VIN = input; }

顺便说一句,我知道我没有使用高效的方法,但我才刚刚开始学习语言,我正在学习编写代码。

我问了一个类似的问题here .然而,尽管我觉得自己的方向是正确的,但没有一个答案能让我到达我想去的地方。

最佳答案

这行代码试图将 VIN 的字符串转换为小写文本,但失败了:

        transform(carList[count].getVIN().begin(),
carList[count].getVIN().end(),
carList[count].getVIN().begin(),
::tolower);

每次调用 getVIN() 都会产生一个单独的 string 实例。由于迭代器不是来自同一个 string 实例,因此失败是结果。

您没有显示如何填充您的 carList,但解决此问题的一种可能方法是在将 VIN 保存在中时将 VIN 保存为小写carList

关于c++ - "String Iterators Incompatible"运行冒泡排序程序时的错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29909219/

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