2012-12-15 8 views
1

나는 C에서 전문가가 아니다 ++하지만 난이 가장 우아한 해결책이 아니라 생각 :구조체를 벡터로 효율적으로 채우는 방법은 무엇입니까?

#include <iostream> 
#include <vector> 

struct coord { 
    int x; 
    int y; 
}; 

int main() 
{ std::vector<int> a {1,2,3,4,5}; 
    std::vector<int> b {10,20,30,40,50}; 
    int i; 
    std::vector<coord> loc (5); 
    for (i=0;i<5;i++) 
    { loc[i].x = a[i]; 
    loc[i].y = b[i]; 
    } 
    return 0; 
} 

사람이 더 나은 솔루션을 가지고 있습니까?

+0

Boost "zip iterator"를보십시오. –

+0

내가 다르게 할 일은 (실제로 이것은 사소한 일이다.) for의 내부에 'i'를 선언하는 것이다. for (int i = 0; i Borgleader

+0

주목할 점은'a'와'b'는 무의미하다는 것입니다. 대신'= i'와'= i * 10'을 사용하십시오. – chris

답변

2

C++ 11을 사용하고있는 것 같습니다. 나는 이것이 작동해야한다고 100 % 확신하지는 않지만 :

std::vector<coord> loc { {1, 10}, {2, 20}, {3, 30}, {4, 40}, {5, 50} }; 
+0

[그것 않습니다] (http://liveworkspace.org/code/icyAI$0) –

+0

좋아요. 아래에 내 코멘트, 예제는 내 진짜 문제의 단순화입니다. 문제는 실제로 벡터로 구조체를 채우는 것이지 손으로 구조체를 채우는 방법이 아니라는 것입니다. 죄송 합니다만 질문이 명확하지 않은 경우. – ed82

0

하나의 벡터를 채우기 위해 두 개의 벡터를 만들어서 성취하려는 것은 무엇입니까? 두 개의 독립적 인 벡터를 하나의 단일 벡터에 지정하고 혼란 스러울 때 선언하는 방법은 비효율적입니다. 두 벡터를 제거하고 괄호


= { {val1,val2} {val1,val2} {val1,val2} }

그러나 보유는 벡터를 사용하도록 벡터 충전 방법을 고수하고 싶은 경우, 하나 하나의 벡터를 사용하여 벡터의 값을 설정 a와 b의 값과 루프 모두

//check to make sure size is even 
for(int i = 0; i < vect.size(); i +=2) 
{ 
    vect[i].x = a[i]; 
    vect[i].y = a[i+1]; 
} 
+0

예를 들어, 단순화하기 위해 벡터를 손으로 채 웁니다. 사실 저는 구조에 넣고 싶은 벡터가 두 개인 더 큰 프로그램을 다루고 있습니다. – ed82

관련 문제