如何在c++; 有没有一种方法在C++中生成一个特定的迭代器? 在C++中,我只发现: std::string strello=“Hello World”; std::string::迭代器strIt=strHello.begin(); std::string::迭代器strIt2=std::find(strello.begin(),strello.end(),'W');

如何在c++; 有没有一种方法在C++中生成一个特定的迭代器? 在C++中,我只发现: std::string strello=“Hello World”; std::string::迭代器strIt=strHello.begin(); std::string::迭代器strIt2=std::find(strello.begin(),strello.end(),'W');,c++,iterator,C++,Iterator,其中,std::find()将返回一个迭代器,.begin()也是迭代器类型。但是如果我想初始化迭代器,它将有一个特定的值,比如: std::string::迭代器strIt3=strello[3];//错误 我该怎么做 更新: std::string::iterator strIt3=strello.begin()+3;//运行良好void无常数(std::string和strello) { std::string::迭代器strIt3=strHello.begin()+3; } 带有常量

其中,
std::find()
将返回一个迭代器,
.begin()
也是迭代器类型。但是如果我想初始化迭代器,它将有一个特定的值,比如:

std::string::迭代器strIt3=strello[3];//错误
我该怎么做


更新:
std::string::iterator strIt3=strello.begin()+3;//运行良好

void无常数(std::string和strello)
{
std::string::迭代器strIt3=strHello.begin()+3;
}
带有常量的void(常量std::string和strello)
{
std::string::const_迭代器strIt3=strello.begin()+3;
}
自动作废(const std::string和strello)
{
auto strIt3=strello.begin()+3;
}
您可以使用以常规方式返回迭代器的第n个后续项:

auto it = v.begin();
auto nx = std::next(it, 2);
请注意,n可以是负数:

auto it = v.end();
auto nx = std::next(it, -2);

迭代器是,这意味着
strello.begin()+3
是完全有效的。@一些程序员伙计哦,这是真的,我不知道为什么我第一次尝试这个时它是无效的。谢谢。@HuXixi另一方面,
std::string::iterator strIt3=strHello[3]完全无效,因为
运算符[]
不返回iterator@HuXixi如果实际代码中的某个地方使用了
const
,则可能会出现错误@robthebloke的回答涵盖了这一点。只是好奇这会起作用吗,auto it1=it+2?新手到C++,我是C程序员,移到C++。Sohil Omer,是的,你可以,如果是A。你可以分享任何关于“随机存取迭代器”的例子吗?因为字符串是字符流,所以我可以访问任何索引,就像我需要为随机访问指定的那样。iterator@SohilOmer .