0
我在嘗試在矢量中查找多個相同元素時出現問題。我想每3個索引找到重複的元素。如果有重複,則接下來的2個元素進入一個新的向量。如何在std :: vector中查找多個元素
std::vector<std::wstring> wsBuf = {"one" , "three", "five", "two", "one","ten", "nine"};`
std::vector<std::wstring> wsWriteFile;
for(DWORD i = 0; i < wsBuf.size(); ++i)
{
std::vector<std::wstring>::iterator it = wsReadFile.begin(); //wsReadFile has an enumerated list
it = std::find(it, wsReadFile.end(), wsBuf[i]);
if(it != wsReadFile.end())
{
DWORD index = std::distance(wsReadFile.begin(), it);
if(index < wsReadFile.size())
{
wsWriteFile.push_back(wsReadFile[index];
wsWriteFile.push_back(wsReadFile[index + 1];
wsWriteFile.push_back(wsReadFile[index + 2];
}
}
}
這隻會找到零索引而不是第二個。有沒有人有任何想法如何找到C++ 11函數的第二個索引?
我發現了一個辦法做到這一點沒有C++ 11個功能
`for(DWORD i = 0; i < wsBuf.size(); ++i)
{
DWORD j = 0;
do
{
if(wsBuf[i] == wsReadFile[j])
{
wsWriteFile.push_back(wsReadFile[index];
wsWriteFile.push_back(wsReadFile[index + 1];
wsWriteFile.push_back(wsReadFile[index + 2];
}
j+=3;
}while(j < wsReadFile.size());
}`
如果你想刪除*重複,然後'std :: sort'的向量,然後[std :: unique](http://en.cppreference.com/w/cpp/algorithm/unique )你有覆蓋。但是,從你的問題*完全不清楚你想要做什麼。 –
可能重複[如何在std :: vector中找到重複項並返回它們的列表?](https://stackoverflow.com/questions/17892896/how-to-find-duplicates-in-stdvectorstring-and-返回他們的列表) –
Ron
@JesperJuhl對不起,我編輯了我的迴應 –