Windows 8 平台::集合::向量排序
在Metro风格的应用程序中,有时我们使用Windows 8 平台::集合::向量排序,windows-8,microsoft-metro,c++-cx,Windows 8,Microsoft Metro,C++ Cx,在Metro风格的应用程序中,有时我们使用Platform::Collections::Vector来保存ListView中使用的元素 如何对平台::集合::向量进行排序 我知道std中有很多可以排序的结构,但我想知道除了编写自己的排序函数之外,是否还有其他方法可以用于Platform::Collections::Vector。我没有找到任何合适的答案,所以我使用了这个解决方法 这是一个简单的快速排序平台::集合::向量 void swap (Platform::Collections::Vec
Platform::Collections::Vector
来保存ListView中使用的元素
如何对平台::集合::向量进行排序
我知道std中有很多可以排序的结构,但我想知道除了编写自己的排序函数之外,是否还有其他方法可以用于
Platform::Collections::Vector
。我没有找到任何合适的答案,所以我使用了这个解决方法
这是一个简单的快速排序平台::集合::向量
void swap (Platform::Collections::Vector<T^>^ vec, int pos1, int pos2)
{
T^ tmp = vec->GetAt(pos1);
vec->SetAt(pos1, vec->GetAt(pos2));
vec->SetAt(pos2,tmp);
}
int compare (T^ c1, T^ c2)
{
int c = wcscmp (c1->Title->Data(),c2->Title->Data());
return -c;
}
int PartitionVec (int left, int right,
Platform::Collections::Vector<T^>^ vec)
{
int i,j;
i = left;
for (int j = left + 1; j <= right; ++j)
{
if (compare (vec->GetAt(j),vec->GetAt(left)) > 0)
{
++i;
swap (vec,i,j);
}
}
swap (vec,left,i);
return i;
}
void QuickSortVec (Platform::Collections::Vector<T^>^ vec,
int start, int end)
{
if (end > start)
{
int pivot_point;
pivot_point = PartitionVec (start, end, vec);
QuickSortVec (vec,start,pivot_point - 1);
QuickSortVec (vec, pivot_point + 1, end);
}
}
void交换(平台::集合::向量^vec,int pos1,int pos2)
{
T^tmp=vec->GetAt(位置1);
vec->SetAt(位置1,vec->GetAt(位置2));
vec->SetAt(位置2,tmp);
}
整数比较(T^c1,T^c2)
{
INTC=wcscmp(c1->Title->Data(),c2->Title->Data());
返回-c;
}
int PartitionVec(int left,int right,
平台::集合::向量^vec)
{
int i,j;
i=左;
对于(int j=left+1;j GetAt(j),vec->GetAt(left))>0)
{
++一,;
互换(向量向量,i,j);
}
}
交换(vec,左,i);
返回i;
}
void QuickSortVec(平台::集合::向量^vec,
整数开始,整数结束)
{
如果(结束>开始)
{
int-pivot_点;
枢轴点=分段向量(开始、结束、向量);
QuickSortVec(vec、start、pivot_point-1);
QuickSortVec(vec,轴点+1,结束);
}
}
我没有找到任何合适的答案,所以我使用了此解决方法
这是一个简单的快速排序平台::集合::向量
void swap (Platform::Collections::Vector<T^>^ vec, int pos1, int pos2)
{
T^ tmp = vec->GetAt(pos1);
vec->SetAt(pos1, vec->GetAt(pos2));
vec->SetAt(pos2,tmp);
}
int compare (T^ c1, T^ c2)
{
int c = wcscmp (c1->Title->Data(),c2->Title->Data());
return -c;
}
int PartitionVec (int left, int right,
Platform::Collections::Vector<T^>^ vec)
{
int i,j;
i = left;
for (int j = left + 1; j <= right; ++j)
{
if (compare (vec->GetAt(j),vec->GetAt(left)) > 0)
{
++i;
swap (vec,i,j);
}
}
swap (vec,left,i);
return i;
}
void QuickSortVec (Platform::Collections::Vector<T^>^ vec,
int start, int end)
{
if (end > start)
{
int pivot_point;
pivot_point = PartitionVec (start, end, vec);
QuickSortVec (vec,start,pivot_point - 1);
QuickSortVec (vec, pivot_point + 1, end);
}
}
void交换(平台::集合::向量^vec,int pos1,int pos2)
{
T^tmp=vec->GetAt(位置1);
vec->SetAt(位置1,vec->GetAt(位置2));
vec->SetAt(位置2,tmp);
}
整数比较(T^c1,T^c2)
{
INTC=wcscmp(c1->Title->Data(),c2->Title->Data());
返回-c;
}
int PartitionVec(int left,int right,
平台::集合::向量^vec)
{
int i,j;
i=左;
对于(int j=left+1;j GetAt(j),vec->GetAt(left))>0)
{
++一,;
互换(向量向量,i,j);
}
}
交换(vec,左,i);
返回i;
}
void QuickSortVec(平台::集合::向量^vec,
整数开始,整数结束)
{
如果(结束>开始)
{
int-pivot_点;
枢轴点=分段向量(开始、结束、向量);
QuickSortVec(vec、start、pivot_point-1);
QuickSortVec(vec,轴点+1,结束);
}
}
实际上,类似于以下内容的操作也应该起作用:
auto vec = ref new Platform::Collections::Vector<T^>();
std::sort(begin(vec), end(vec));
auto-vec=ref新平台::集合::向量();
排序(开始(vec),结束(vec));
实际上,类似于以下内容的操作也应该起作用:
auto vec = ref new Platform::Collections::Vector<T^>();
std::sort(begin(vec), end(vec));
auto-vec=ref新平台::集合::向量();
排序(开始(vec),结束(vec));
您可以将std
与CX
类型一起使用吗?您可以在CX容器上使用std算法编译器不允许在这个设计和实现的vecI中使用begin和end,我可以确认Raman是正确的。在包含WFC::Ivector vector或pc::vector ^之后调用不合格的非成员开始()/Enter()后,将返回一个PC::Vector迭代程序,一个普通的C++类,它是一个随机访问的STL迭代器。它可以与std::sort()等STL算法一起使用。请注意,std::sort()希望将元素与op@ppaulojr我刚刚被VisualStudio2015 RC的这个问题绊倒了。我的问题是我使用的是std::begin,但这些集合的非成员begin函数位于WFC命名空间中。删除上面答案中的std::like修复了我的问题,因为我有一个用于WFC命名空间的using namespace语句。也许这就是你遇到的问题。你能将std
与CX
类型一起使用吗?你可以在CX容器上使用std算法编译器不允许在这个设计和实现的vecI中使用begin和end,我可以确认Raman是正确的。在包含WFC::Ivector vector或pc::vector ^之后调用不合格的非成员开始()/Enter()后,将返回一个PC::Vector迭代程序,一个普通的C++类,它是一个随机访问的STL迭代器。它可以与std::sort()等STL算法一起使用。请注意,std::sort()希望将元素与op@ppaulojr我刚刚被VisualStudio2015 RC的这个问题绊倒了。我的问题是我使用的是std::begin,但这些集合的非成员begin函数位于WFC命名空间中。删除上面答案中的std::like修复了我的问题,因为我有一个用于WFC命名空间的using namespace语句。也许这就是你遇到的问题。