반응형
find 메소드를 사용한 후 std :: map을 업데이트하는 방법은 무엇입니까?
메서드를 std::map
사용한 후 키 값을 업데이트 하는 find
방법은 무엇입니까?
다음과 같은지도 및 반복기 선언이 있습니다.
map <char, int> m1;
map <char, int>::iterator m1_it;
typedef pair <char, int> count_pair;
나는 캐릭터의 발생 횟수를 저장하기 위해 맵을 사용하고 있습니다.
Visual C ++ 2010을 사용하고 있습니다.
std::map::find
찾은 요소 (또는 end()
요소를 찾을 수없는 경우)에 대한 반복기를 반환합니다 . 그래서 오랫동안 같이 map
const를하지, 당신은 반복자가 가리키는 요소를 수정할 수 있습니다 :
std::map<char, int> m;
m.insert(std::make_pair('c', 0)); // c is for cookie
std::map<char, int>::iterator it = m.find('c');
if (it != m.end())
it->second = 42;
연산자 []를 사용합니다.
map <char, int> m1;
m1['G'] ++; // If the element 'G' does not exist then it is created and
// initialized to zero. A reference to the internal value
// is returned. so that the ++ operator can be applied.
// If 'G' did not exist it now exist and is 1.
// If 'G' had a value of 'n' it now has a value of 'n+1'
따라서이 기술을 사용하면 스트림에서 모든 문자를 읽고 세는 것이 정말 쉬워집니다.
map <char, int> m1;
std::ifstream file("Plop");
std::istreambuf_iterator<char> end;
for(std::istreambuf_iterator<char> loop(file); loop != end; ++loop)
{
++m1[*loop]; // prefer prefix increment out of habbit
}
std::map::at
멤버 함수 를 사용할 수 있으며 키 k로 식별되는 요소의 매핑 된 값에 대한 참조를 반환합니다.
std::map<char,int> mymap = {
{ 'a', 0 },
{ 'b', 0 },
};
mymap.at('a') = 10;
mymap.at('b') = 20;
이렇게 할 수도 있습니다.
std::map<char, int>::iterator it = m.find('c');
if (it != m.end())
(*it).second = 42;
이미 키를 알고있는 경우 다음을 사용하여 해당 키의 값을 직접 업데이트 할 수 있습니다. m[key] = new_value
다음은 도움이 될 수있는 샘플 코드입니다.
map<int, int> m;
for(int i=0; i<5; i++)
m[i] = i;
for(auto it=m.begin(); it!=m.end(); it++)
cout<<it->second<<" ";
//Output: 0 1 2 3 4
m[4] = 7; //updating value at key 4 here
cout<<"\n"; //Change line
for(auto it=m.begin(); it!=m.end(); it++)
cout<<it->second<<" ";
// Output: 0 1 2 3 7
다음과 같이 값을 업데이트 할 수 있습니다.
auto itr = m.find('ch');
if (itr != m.end()){
(*itr).second = 98;
}
참고 URL : https://stackoverflow.com/questions/4527686/how-to-update-stdmap-after-using-the-find-method
반응형
'Programing' 카테고리의 다른 글
GDB : 변수가 같은 값이면 중단 (0) | 2020.10.10 |
---|---|
Android 에뮬레이터에서 Google Play 서비스를 다운로드하는 방법은 무엇입니까? (0) | 2020.10.10 |
AWS S3 CLI를 사용하여 BASH의 stdout에 파일을 덤프하는 방법은 무엇입니까? (0) | 2020.10.10 |
GoogleSignIn, AdMob으로 인해 '앱이 사용 설명없이 개인 정보에 민감한 데이터에 액세스하려고 시도'앱 제출시 iOS 10 GM 출시 오류 (0) | 2020.10.10 |
복합 키 사전 (0) | 2020.10.10 |