我有一个vector<string>
,并且使用迭代器,我需要在循环内提取迭代器指向的整个字符串:
vector<string> v;
auto iter = v.begin();
while(iter != v.end()){
auto s = //extract the string corresponding to the current iterator position
}
由于*iter
会返回相应字符串的第一个字符,所以该怎么做?
答案 0 :(得分:1)
如果您可以使用C ++ 11(我假设您已经使用过auto
,那么您可以使用range-based for loop:
for (const std::string &value : v)
{
// Do something with value
}
您最初提出的问题,
因为* iter会向我返回相应字符串的第一个字符
这是不正确的,* iter将在向量内的相关位置返回对string
的引用。您的循环虽然不会增加迭代器,但最终会导致无限循环。参见https://wandbox.org/permlink/pCe1oQDusDbJ8HjK