使用比较运算符对字符串数组进行排序

Using comparison operators to sort string array

本文关键字:数组 排序 字符串 比较 运算符      更新时间:2023-10-16

我到处寻找,找不到适合我需求的具体答案。我想使用这种类型的格式对比此示例更复杂的数组进行排序。它可以编译,但是当我运行它时,我得到terminated by signal SIGSEV(地址边界错误)。

我正在尝试做的一个简单的例子:

string array[] = {zipper, bad, dog, apple, car};
string temparray[5];
int counter = 0;
for(int i = 0; i < 5; i++){
       for(int x = 0; x < 5; x++){
            if(array[i] > array[x]){
              counter++;
            }
        }
       temparray[counter] = array[i];
}
for(int y = 0; y < 5; y++){
       array[y] = temparray[y];   
}

似乎有什么问题?

你永远不会重置counter 。假设您的数组是 {5,4,3,2,1} 。然后在 for 循环的第一次迭代之后,您将得到 counter =4。在内部 for 循环的下一次迭代之后,counter将是 7,您将尝试访问行上temparray的第 7 个元素

temparray[counter] = array[i];

temparray只有 5 个元素长。我不知道><操作员如何为std::string工作,但我敢打赌橡树对橡子这是你的问题。

您只需添加即可解决此问题

counter=0;

紧跟在上述行之后:

temparray[counter] = array[i];

或者通过在循环开始时将其初始化为零,或者在循环中声明它或你有什么。