vector<double>
의 mass
및 velocity
모두 같은 크기 N
이 있습니다. 그것들은 N 개의 입자의 질량과 속도에 대한 정보를 담고있다. mass[i]
및 velocity[i]
은 i 번째 입자의 특성입니다."고정"두 벡터를 정렬하고 그들을
C++에서이 두 벡터를 함께 "잠궈"질량이 큰 순서로 정렬 할 수 있습니까? mass
는 증가 순서이어야 벡터를 정렬하고, 속도 벡터가 정렬 된 질량의 대응하는 속도를 포함한다 따라서 후
예컨대 정렬하기 전에 질량 = (4,2,1,3) 및 속도 = (13,14,15,16) 질량 = (1,2,3,4) 및 속도 = (15, 14, 16, 13)
내가이 아는 한 (비 효율성) 방법은<
를 오버로드하여
std::sort
사용하여이 벡터를 구조체의
struct particle
{
double mass;
double velocity;
bool operator < (const particle& str) const
{
return (mass < str.mass);
}
};
의 벡터로 데이터를 전송하고 vector<particle> particlelist(N)
를 만든 다음 정렬
입니다 위에서 정의한대로 연산자를 사용합니다.
필자는 구조 데이터 배열을 구조체 방식에 비해 비효율적이라고 들었으므로 데이터를 구조체 형식으로 저장하고 싶지 않습니다 (적어도 CUDA에서).
로 이어질 수 있기 때문에 더 나은 당신이 하나의 속성을 다른 변경 전 같은 방식을 변경하는 경우와 같은 뜻 "잠금"? –
나는 편집을하고 질문을 명확히했다. – smilingbuddha
관련 항목 : http://stackoverflow.com/questions/3398819/sort-by-proxy-or-sort-one-container-by-the-contents-of-another-in-c –