C ++的隐藏功能

在这里,我们将看到C ++编程语言的一些出色功能和技巧,可以在不同领域提供帮助。就像我们想参加一些竞争性编程活动一样,这些技巧将有助于我们减少编写代码的时间。让我们一一看一下这些例子。

不使用%运算符检查数字是奇数还是偶数。这个技巧很简单。我们可以对数字和1进行按位与运算。如果结果为非零,则为奇数,否则为偶数。逻辑太简单了。所有奇数在LSb处均为1。因此,在使用1执行AND之后,它将屏蔽除LSb之外的所有字符,以便我们轻松获得所需的结果。

if ((n & 1) != 0) {

   //这很奇怪

} else {

   //这甚至

}

使用移位运算符快速进行乘法和除法。如果我们想将一个数字与2n之类的数字相乘,那么我们可以简单地将数字左移n次。同样,如果我们想将数字除以2n,则将数字右移n次。

x = 40;

y = x << 2; //x will be multiplied with 4, so y = 160

cout << x;

x = 40;

y = x >> 2; //x will be divided by 4, so y = 10

cout << x;

我们可以交换两个数字而无需使用第三个变量。可以使用+和–运算符来完成。但是我们也可以使用按位XOR运算符来实现。您可以手动检查数字以确保。

//swap x and y

x ^= y;

y ^= x;

x ^= y;

有时会有一些限制,我们不能strlen()在代码中使用该函数。在这种情况下,我们将创建自己的strlen()函数。如果只是访问字符,那么我们真的不需要这样做。我们可以检查位置i处的字符是否有效(非零)。如果它不为零,则可以遍历,否则停止。

for(int i = 0; s[i]; i++) {

   cout << s[i];

}

大多数情况下,我们在STL中使用push_back()函数在诸如vector等的某些容器中添加新元素。如果不使用它们,我们也可以使用emplace_back()。此功能要快得多。这不会在其他地方分配内存,而是将分配的内存追加到容器中。

C ++提供了内置的GCD功能。我们可以在不同情况下使用它们。语法如下。

__gcd(x, y) //find GCD of x and y

主函数中数组的最大大小为10 ^ 6。但是,如果数组是全局声明的,则我们可以声明最大10 ^ 7的大小。

我们可以使用对数运算来计算任何数字的最高有效位数。请参阅以下逻辑以了解主意

n = 4578;

double k = log10(n);

k = k – floor(k);

int x = pow(10, k); //x is the most significant digit

使用日志操作直接计算位数。为此,我们不使用任何循环。

n = 4578;

int digit_count = floot(log10(n)) + 1

我们可以直接使用此逻辑检查数字是否为2的幂。

x = 1024;

bool check = x && (!(x & (x-1))); //if this is true, then power of two.

C ++中有一些内置算法,可以检查以下条件。

all_of(left, left + n, isPositive()); //check all are positive or not

any_of(left, left + n, isPositive()); //check at least one positive or not.

none_of(left, left + n, isPositive()); //check no elements are positive

复制功能可将元素从一个容器复制到另一个容器。

int src[5] = {10, 20, 30, 40, 50};

int des[5];

copy_n(src, 5, dest);

有一种称为的算法itoa()。该算法可用于创建一系列顺序递增的值,就像先将初始值分配给*,然后通过使用后递增运算符使用该值一样。

int arr[5] = {0};

char str[5] = {0};

itoa(arr, arr+5, 15); //it will generate {15, 16, 17, 18, 19}

itoa(str, str+5, ‘A’); //it will generate {‘A’, ‘B’, ‘C’, ‘D’, ‘E’}

以二进制形式分配值。我们可以使用带有一些二进制数的0b前缀来表示该数字是以二进制形式提供的。

int x = 0b1101; //then x will hold 13

在C ++中,我们可以使用关键字而不使用条件运算符。像关键字“ and”可以代替“&”。

x = 10;

if(x < 10 and x > 5)

   cout << “True” << endl;

else

   cout << “False” << endl;

//This will return True

以上是 C ++的隐藏功能 的全部内容, 来源链接: utcz.com/z/330951.html

回到顶部