Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我需要解释这个简单的重复单词_C++ - Fatal编程技术网

C++ 我需要解释这个简单的重复单词

C++ 我需要解释这个简单的重复单词,c++,C++,代码工作得很完美,但我不清楚它到底是如何工作的。我不明白为什么我们需要对字符串向量进行排序。它只会按字母顺序排列单词,对吗?另外,当我们将它与字符串变量“Previous”进行比较时,它如何检测任何单词而不仅仅是相邻的单词 #包括 #包括 使用名称空间std; 空洞检测(矢量vs); int main(){ 向量vs; 串电流; 而(cin>>当前) vs.推回(当前); 排序(vs.begin(),vs.end()); 检测(vs); 系统(“暂停”); } 空洞检测(向量vs){ 字符串pr

代码工作得很完美,但我不清楚它到底是如何工作的。我不明白为什么我们需要对字符串向量进行排序。它只会按字母顺序排列单词,对吗?另外,当我们将它与字符串变量“Previous”进行比较时,它如何检测任何单词而不仅仅是相邻的单词

#包括
#包括
使用名称空间std;
空洞检测(矢量vs);
int main(){
向量vs;
串电流;
而(cin>>当前)
vs.推回(当前);
排序(vs.begin(),vs.end());
检测(vs);
系统(“暂停”);
}
空洞检测(向量vs){
字符串previous=“”;
int指数=0;
而(索引cout由于向量是使用
sort()
按字母顺序排序的,因此任何重复的单词都将彼此相邻(因为它们是同一个单词,并且将在排序中争夺相同的位置)。这样,
检测()
只需查看所有相邻单词对,并以这种方式检测重复项。如果向量未排序,则
detect()
将不起作用。

回答1:如果按字母顺序排序,则任何相等的元素将彼此相邻

回答2:It只获取彼此相邻的相等值,但由于排序,所有相等值都将彼此相邻

我希望这有帮助

#include <iostream>
#include <vector>

using namespace std;

void detect(vector<string> vs);

int main() {
vector<string> vs;
string current;
while (cin>>current)
    vs.push_back(current);
    sort(vs.begin(), vs.end());
    detect (vs);
    system("pause");
}

void detect(vector<string> vs){
    string previous = " ";
    int index = 0;
    while (index < vs.size()) {
        if (vs[index]==previous) {
            cout<<"repeated words: " <<previous<< endl;
        }
        previous = vs[index];
        index++;
    }
}