J'ai codé pendant presque deux mois maintenant et je commence juste à faire "couramment" avec les bases de la langue. Récemment, je suis tombé sur un morceau de code qui ressemblait donc:
if (! (n & 1)) { median += a[n / 2 - 1]; median /= 2; } map<int, int> f; for (int e : a) { f[e]++; } int mode = 0; for (auto e : f) { if (e.second > f[mode]) { mode = e.first; } }
3 Réponses :
pour le bitwise et il vérifie si n est même. Il fonctionne de la manière suivante: Si le dernier bit in n est un 1 (lequel il est pour chaque nombre impair), le résultat de N & 1 sera 1, sinon ce sera 0. Étant donné que n'importe quoi! = 0 est évalué à vrai En C ++, il invoque ce chèque. Puisque l'expression entière est retournée par le "!" Il évaluera à FALSE lorsque N est impair et vrai lorsque n est même.
Comme exemple, prenne n = 3, n = 4, n = 5 et les représentent en binaire: P>
for (int e : a)
Merci beaucoup! C'est assez compliqué, le bitwise je veux dire, non?
C'est un moyen un peu inintucieux de l'écrire, le moyen plus courant de l'écrire comme (n% 2 == 0) comme dans "si n est uniformément divisible par 2".
Oui, c'est ce que j'ai fait dans cette affectation. (C'est un code que le tuteur d'une classe en ligne nous a donné, mais il nous a dit que nous ne l'apprendrions pas pendant un moment, mais je ne suis pas assez patient pour attendre: p).
@iaminsensible n'est pas vraiment compliqué; Vous avez juste deux chiffres représentés en binaire et comparer chacun de leurs chiffres - si le premier chiffre est un chiffre de 1 et deuxième chiffre est un résultat 1, sinon le résultat est une même avec ou sauf là la logique est; Si le premier chiffre est un chiffre de 1 ou deuxième chiffre est un résultat 1 est un 1 sinon il est un 0. XOR (exclusif ou) est similaire; Si le premier ou le deuxième chiffre ( un seul d'entre eux i>) est un résultat 1 résultat sinon 0.
Merci. Au fait, j'ai lu la documentation de CPPRARefence et si je comprenais correctement, si nous avons une boucle: pour (Auto N: a) {...} (où A est un tableau avec 5 éléments) Le corps de la boucle sera exécuté 5 fois, ou n fois où n est égal au nombre d'éléments de tableau.
Si N est même, la conversion en binaire entraînera quelque chose comme 1010, le moins important étant toujours 0. Si vous et 0 et 1, vous obtenez 0. La première si la boucle si elle est de vérifier si n est même. p>
pour les opérations bitwises - 1. Convertir le numéro en binaire. 2. Effectuez une opération sur un peu individuel. par exemple. 3 & 6 = 011 & 110 = 010 = 2 P>
Posez-les en tant que champignon, exemple : P>
for(auto it=std::begin(f); it!=std::end(f); ++it) { auto e = *it;
en.cppreference.com/w/cpp/language/range-for
en.cpprefreence.com/w/cpp/language/operator_logical
Je cherchais une réponse à Cplusplus.com où ils n'expliquent pas la meilleure façon possible. Merci beaucoup!
en.cpprefreence.com/w/cpp/language/Operator_arithmetic
Si vous avez une réponse qui aide, acceptez-la; Ou écrivez votre propre réponse si la non des réponses données a aidé suffisamment. Ne modifiez pas "Résolu" dans le titre.