3,882
社区成员
发帖
与我相关
我的任务
分享
for(int i=0;i< len;i++)
{
array[i]
for(int j=i;j<len;j++)
if( array[j] 去掉最后部分 hasprefix (array[i]))
{
过滤掉array[i]
}
}
for(int i=0;i< len;i++)
{
array[i]
for(int j=i;j<len;j++)
if( array[j] 去掉最后部分 hasprefix (array[i]))
{
过滤掉array[i]
}
}
对于已经排序的路径来说,我是不是可以不用两个for循环,只要判断array[i]和array[i+1]就了
比如这样的数组
[C:\opt\public\technology
C:\opt\public\technology2\epp
C:\opt\public\technology2\epp\epp_build]
如果C:\opt\public\technology2\epp不满足的话,那C:\opt\public\technology2\epp\epp_build就更不满足了。
但实际输出好像不对,谁能举出个反例来吗?
for(int i=0;i< len;i++)
{
if( array[j] 去掉最后部分 hasprefix (array[i+1]))
{
过滤掉array[i]
}
}
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
bool myfunction(string a, string b) {
return (a.find(b)==0);
}
int main () {
string mystrs[5] = {
"C:\\opt\\public\\technology\\epp\\epp_build",
"C:\\opt\\public\\technology\\epp",
"C:\\opt\\public\\technology",
"D:\\opt\\technology",
"D:\\opt",
};
vector<string> myvector (mystrs,mystrs+5);
vector<string>::iterator it;
it=unique(myvector.begin(), myvector.end(), myfunction);
myvector.resize(distance(myvector.begin(),it) );
for (it=myvector.begin(); it!=myvector.end(); ++it)
cout << *it <<endl;
return 0;
}
//C:\opt\public\technology\epp\epp_build
//D:\opt\technology
//