gpt4 book ai didi

c++ - 为什么 std::distance 打印出 `-` ?

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:25 25 4
gpt4 key购买 nike

我编写了以下程序来打印以 a=0b=1 等开头的字母表的出现。有人可以指出为什么使用 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(search, table.begin())

你应该有:std::distance(table.begin(), search)

关于c++ - 为什么 std::distance 打印出 `-` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46242464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com