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

时间:2016-02-29 23:27:02

标签: c++ arrays

我到处寻找,找不到符合我需要的具体答案。我想使用这种类型的格式来排序比这个例子更复杂的数组。它编译,但当我运行它时,我得到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];   
}

什么似乎是问题?

1 个答案:

答案 0 :(得分:0)

您永远不会重置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];

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