我到处寻找,找不到符合我需要的具体答案。我想使用这种类型的格式来排序比这个例子更复杂的数组。它编译,但当我运行它时,我得到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];
}
什么似乎是问题?
答案 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];
或者在循环开始时将其初始化为零,或者在循环中声明它或者你有什么。