반응형
ints 벡터의 인덱스로 사용하기 위해 strings 벡터에서 특정 요소의 위치를 얻는 방법은 무엇입니까?
의 벡터에서 요소의 인덱스를 가져와 strings
다른 int
유형의 벡터에서 인덱스로 사용하려고 하는데 이것이 가능합니까?
예:
vector <string> Names;
vector <int> Numbers;
...
// condition to check whether the name exists or not
if((find(Names.begin(), Names.end(), old_name_)) != Names.end())
{ // if yes
cout <<"Enter the new name."<< endl;
cin >> name;
replace(Names.begin(), Names.end(), old_name_, name);
}
지금은 위치를 얻으려면 old_name
에서 Names
특정 요소를 액세스에서 사용하는 벡터 Numbers
벡터. 그래서 다음과 같이 말할 수 있습니다.
Numbers[position] = 3 ; // or whatever value assigned here.
나는 사용해 보았다 :
vector <string> :: const_iterator pos;
pos = (find(Names.begin(), Names.end(), old_name_))
Numbers[pos] = 3;
그러나 분명히 이것은 pos
유형 문자열 이기 때문에 작동하지 않습니다 !
요소를 가리키는 반복기를 알고있는 벡터에서 요소의 위치를 얻으려면 반복기 v.begin()
에서 빼면 됩니다.
ptrdiff_t pos = find(Names.begin(), Names.end(), old_name_) - Names.begin();
지금 당신은 확인해야 pos
대하여 Names.size()
그 경계 여부를 밖으로 있는지 :
if(pos >= Names.size()) {
//old_name_ not found
}
벡터 반복기는 배열 포인터와 유사한 방식으로 작동합니다. 포인터 산술에 대해 알고있는 대부분의 내용은 벡터 반복자에도 적용 할 수 있습니다.
C ++ 11부터는 std::distance
반복기와 포인터 모두에 대해 빼기 대신 사용할 수 있습니다 .
ptrdiff_t pos = distance(Names.begin(), find(Names.begin(), Names.end(), old_name_));
색인 std::find
을 원하면와 함께 사용할 수 있습니다 std::distance
.
auto it = std::find(Names.begin(), Names.end(), old_name_);
if (it == Names.end())
{
// name not in vector
} else
{
auto index = std::distance(Names.begin(), it);
}
저는 초보자이므로 여기에 초보자 답변이 있습니다. for 루프의 if는 다른 벡터의 Numbers [i]와 같이 필요할 때 사용할 수있는 i를 제공합니다. 대부분은 예를 들어 보풀이며, for / if는 실제로 모든 것을 말합니다.
int main(){
vector<string>names{"Sara", "Harold", "Frank", "Taylor", "Sasha", "Seymore"};
string req_name;
cout<<"Enter search name: "<<'\n';
cin>>req_name;
for(int i=0; i<=names.size()-1; ++i) {
if(names[i]==req_name){
cout<<"The index number for "<<req_name<<" is "<<i<<'\n';
return 0;
}
else if(names[i]!=req_name && i==names.size()-1) {
cout<<"That name is not an element in this vector"<<'\n';
} else {
continue;
}
}
반응형
'development' 카테고리의 다른 글
virtualenv에서 PYTHONPATH에 경로를 추가하는 방법 (0) | 2020.08.29 |
---|---|
대기열에있는 내용을보고 Sidekiq에서 대기열을 지우는 콘솔 명령이 있습니까? (0) | 2020.08.29 |
Rails 3 커스텀 유효성 검사기는 어디에 저장해야합니까? (0) | 2020.08.29 |
Ruby에서 DateTime의 시간 부분 설정 (0) | 2020.08.29 |
ASP.NET MVC에서 비활성화 된 입력을 제출하려면 어떻게합니까? (0) | 2020.08.29 |