读书人

关于在向量中找到给定元素的位置的有关

发布时间: 2013-10-01 12:15:56 作者: rapoo

关于在向量中找到给定元素的位置的问题
本帖最后由 u011873969 于 2013-09-29 22:47:11 编辑

就是有一个字符串向量strvec,其中已经有了一串单词了。然后用户输入两个不同的单词key1和key2,然后编程找到二者在strvec中第一次出现的位置。我想一次性完成,但是怎么也不得要领。难道只能像下面这样弄两个循环体吗?感觉得不偿失啊!其中index是一个vector<string>::iterator,foundI和foundII是两个布尔变量,初始值都是false



for(index=strvec.begin();index!=strvec.end();++index)
{
if(*index==key1)
{
locuI=index;
foundI=true;
break;
}

for(index=strvec.begin();index!=strvec.end();++index)

if(*index==key2)
{
locuII=index;
foundII=true;
break;
}

}
向量 查找
[解决办法]
偶觉得够少了。
[解决办法]
用find算法,两行代码不就ok咯?
[解决办法]
最后还要加上都=true就break
[解决办法]
好像没有特别便捷的接口
[解决办法]
用strstr函数试试
[解决办法]
引用:
Quote: 引用:

用find算法,两行代码不就ok咯?


求解释


find算法的核心也是循环,两次调用find,其实也是两个循环。

不明白LZ提出这个问题背景需求是什么,如果需要多次求不同的单词的出现位置,可以预先扫描vecor建立每个单词的映射(map<string, int>),然后直接查表
[解决办法]
index1 = find(strvect.begin(), strvect.end(), key1);
if((index2=find(strvect.begin(),index1, key2)) == index1){
index2 = find(index1+1, strvect.end(), key2);
}

哈,很简洁了吧

读书人网 >C++

热点推荐