de travail sur un algorithme pour regarder un conteneur STL de chaînes STL (ou d'autres chaînes, ce qui rend général)Modèles et syntaxe
Fondamentalement, il boucle à travers quelque chose comme une std :: liste et renvoie la longueur de la plus longue commençant en commun. Il est pour le traitement des listes de fichiers, comme ceci:
C:\Windows\System32\Stuff.exe C:\Windows\Things\InHere.txt C:\Windows\Foo\Bar.txt
Cela devrait retourner 11, parce que « C:\Windows\
» est en commun.
N'a jamais écrit de fonction matricielle auparavant, et mon compilateur se plaint. Voici mon code:
tête:
// longestBegin.h -- Longest beginning subsequence solver
template <typename SequenceSequenceT, typename SequenceT, typename T >
size_t longestBegin(InputIterator firstCandidates, InputIterator lastCandidates);
Mise en œuvre:
// longestBegin.cpp -- Longest beginning subsequence solver
#include <stdafx.h>
template <typename SequenceSequenceT, typename SequenceT, typename T >
size_t longestBegin(InputIterator firstCandidates, InputIterator lastCandidates)
{
SequenceT firstString = *firstCandidates;
size_t longestValue = firstString.length();
firstCandidates++;
for(size_t idx = 0; idx < longestValue; idx++)
{
T curChar = firstString[idx];
for(InputIterator curCandidate = firstCandidates;curCandidate != lastCandidates; curCandidate++)
{
if ((*curCandidate)[idx] != curChar)
return idx - 1;
}
}
return longestValue;
}
J'ai un drôle de sentiment que je manque quelque chose de fondamental ici ......
Le les bombes du compilateur avec l'erreur suivante:
error C2998: 'size_t longestBegin' : cannot be a template definition
Des idées? Merci!
Billy3
s'il vous plaît augmenter la lisibilité de votre code ici en supprimant les messages de copyright –
Et indiquer dans votre code où vous obtenez le message d'erreur –
D'accord, mais simplement en copiant le commentaire de celui ci-dessus ne vous aide pas. –