为什么break语句终止程序



我有一个break语句来退出中的循环

while (cin >> text){
if (text == "break"){
break;
};
cout << text << endl;
words.push_back(text);
}

问题是程序在之后就停止了

退出代码:0(正常程序终止(。

这是我的完整程序:

// Example program
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
string text;
vector<string> words;
vector<int> indices;
vector<int> indices_sorted;
vector<string> words_sorted;

cout << "type in you're desired Text: ";
while (cin >> text){
if (text == "break"){
break;
};
cout << text << endl;
words.push_back(text);
}
int size = words.size();
for (int i =0; i < size; i++){
indices_sorted.push_back(words[i].size());

}
indices = indices_sorted;
sort(indices_sorted.end(),indices_sorted.begin());
cout << "you typed: " << words.size() << " words!";
int counter = 0 ;
for (int i =0; i < size; i++){
while (indices[i] != indices[counter])counter++;
words_sorted.push_back(words[counter]);
counter = 0;
cout << words_sorted[i]<< endl;

}
return 0;
}

您已经编写了

sort(indices_sorted.end(),indices_sorted.begin());

这违反了std::sort的一个先决条件,即第二个迭代器必须从第一个迭代者开始通过递增它才能到达。除非indices_sorted为空(即begin等于end(,否则代码中不会出现这种情况,因此您正在调用未定义的行为。

你需要交换参数

sort(indices_sorted.begin(),indices_sorted.end());

然后你的程序工作

相关内容

  • 没有找到相关文章

最新更新