14
저는 정수 벡터를 가지고 있으며 쌍의 벡터로 변환하려고합니다 (쌍은 bool과 int로 구성됩니다). 현재 코드는 다음과 같이 간단합니다.변환을 사용하여 새 벡터 만들기
std::vector<int> a;
std::vector<std::pair<bool,int> > b;
a.push_back(1);
a.push_back(2);
a.push_back(3);
for(int i = 0; i < a.size(); ++i)
{
b.push_back(std::make_pair(false, a[i]));
}
루프를 직접 작성하지 않으면 어떤 방법이 있을까요? 아마도 일부 알고리즘을 사용하고 있을까요? 이 그것보다 가치가 더 문제가 될 증명할 수 있지만
struct F {
F(std::vector<std::pair<bool,int> > &b) : m_b(b){
}
void operator()(int x) {
m_b.push_back(std::make_pair(false, x));
}
std::vector<std::pair<bool,int> > &m_b;
};
std::for_each(a.begin(), a.end(), F(b));
:
목 anks .. 나는이 일을하는 것보다 간단한 방법이되기를 바랐다. 또한 생성자에 전달 된 매개 변수가 const 참조가 아니므로 응답을 편집 할 수있다. 나는 표준 STL 알고리즘을 가지고 살기 위해 부스트를 사용하지 않고있다. – Naveen
좋은 const에 대한 호출, const로 기본 설정하는 습관의 힘 :) –
@patryk, 숫자 4 - C++ 11은 여전히'vector :: insert'에 대한 인수로 위치와 값을 필요로하지만, 그렇지 않습니다. ? (예 : [here] (http://www.cplusplus.com/reference/vector/vector/insert/)를 참조하십시오.)'push_back() '을 의미 했습니까? – phlummox