a=0
、b=1
などで始まるアルファベットの出現を印刷する次のプログラムを作成しました。誰かが、なぜstd :: distanceを使用して空白を表示しているのかを指摘してもらえますか?-
、どうすればそれを取り除くことができますか?これらの2つの反復子間の距離は負であるのでなぜstd :: distanceは `-`を出力しますか?
// Example program
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
string str;
cin>>str;
int n=str.size();
std::vector<char> table(26);
table = {
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'
};
int i=0;
while(i<n) {
char c=str[i];
auto search = std::find(table.begin(), table.end(), c);
if(search!=table.end()) {
int dist = std::distance(search, table.begin());
cout<<dist; //prints out -0-1-2-3 instead of 0123, why?
}
i++;
}
return 0;
}
作業プログラムhere
が含まれますことを提供したい場合は、
std::distance
の呼び出しを使用することができますが、それは '-'印刷さゼロの前にあなたは確かにいますか?それは私がそれを試してみません。 –あなたのリンクではdistの正しい方法があるdist = std :: distance(table.begin()、search);あなたのコードは異なる –
@ HariomSingh、それは後で変更したからです。 –