En C++, je cherche à mettre en oeuvre un opérateur pour sélectionner des éléments dans une liste (de type B) sur la base B étant contenu entièrement à l'intérieur A.Modèles et C++ opérateur pour la logique: B contenus dans l'ensemble A
Dans le livre "la conception logique des ordinateurs numériques" par Montgomery Phister jr (publié en 1958), p54, il est dit:
F11 = A + ~ B a deux associations intéressantes et utiles, aucun d'entre eux ayant beaucoup à faire avec la conception d'ordinateur. La première est la notation logique de l'implication ... La seconde est la notation de l'inclusion ... Cela peut être exprimé par une relation d'aspect familier, B < A; ou par l'énoncé "B est inclus dans A"; ou par l'équation booléenne F11 = A + ~ B = 1.
Ma mise en œuvre initiale était en C. Des rappels ont été donnés à la liste à utiliser pour de telles opérations. Un exemple étant une liste d'ints, et une structure contenant deux nombres ints, min et max, à des fins de sélection.
Dans ce cas, la sélection serait basée sur B> = A-> min & & B < = A-> max. En utilisant C++ et les templates, comment approcherais-tu ceci après avoir implémenté une liste générique en C en utilisant des pointeurs et des callbacks void?
Utilise < comme opérateur surchargé à de telles fins ... <ugh> evil? </ugh >
(ou en utilisant une classe B pour les critères de sélection, la mise en œuvre de la comparaison par la surcharge>?)
modifier: ma mise en œuvre des noeuds de la liste contient un membre pour signaler l'article sélection ou non. En ce qui concerne les ensembles, et l'unicité, les données de la liste contiendront probablement un membre spécifiant la position le long d'une ligne de temps, étant donné que l'un des principaux critères de sélection, en utilisant le jeu de termes pourrait être trompeur car il n'y a pas l'unicité garantie en ce qui concerne la position le long de la ligne temporelle - c'est-à-dire que les événements peuvent se produire simultanément.
+1 pour set_intersection.Les algorithmes de la bibliothèque standard sont trop souvent ignorés et pourtant, il y en a souvent un qui convient parfaitement à ce que vous essayez d'accomplir. –
peut-être que mon utilisation du jeu de termes était erronée dans ce cas, la liste ne contient pas nécessairement des éléments uniques (où l'unicité est basée sur ce qui est sélectionné par). –
accepté pour mentionner les foncteurs - pensait encore en termes de pointeurs de fonction. –