小编Aru*_*yan的帖子

以 % 为单位缩放 HTML 图像的宽度和高度

我知道 HTML 图像的宽度和高度属性可以简单地通过<img src="Debian.jpg" style="height: 120px; width: 130px">.

我正在寻找的是,是否存在一个 CSS 属性,该属性只取一个值,%并根据该百分比缩放原始图像的宽度和高度。例如,如果高度和宽度Debian.jpg1000x700与我指定50%在CSS属性然后将图像按比例缩小到500x350,因此纵横比被维持。

我很难在单独调整高度和宽度的同时保持图像的纵横比。如果这样的属性不存在,那么有什么方法可以保持纵横比并获得所需的图像尺寸?

html javascript css image

17
推荐指数
1
解决办法
2792
查看次数

Fizz Buzz:理想的解决方案

所以,Fizz Buzz 是一个非常简单的问题,这个问题有很多解决方案。在最近的一次采访中,面试官让我为 Fizz Buzz 写一个函数,所以我一手想出了以下方法。

void fizz_buzz(int range) {
    for(auto i = 1; i < range; ++i) {
        if(i % 15 == 0)
            cout << "FizzBuzz" << "\n";
        else if(i % 3 == 0)
            cout << "Fizz" << "\n";
        else if(i % 5 == 0)
            cout << "Buzz" << "\n";
        else 
            cout << i << "\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

然后面试官问我如果我想修改 3 和 7 的 Fizz Buzz 那么在你的代码中多个条件语句将不得不更改。

所以,我写了以下片段:

void fizz_buzz(int range) {
    //Notice that we don't need to check for …
Run Code Online (Sandbox Code Playgroud)

c++

6
推荐指数
1
解决办法
314
查看次数

跳转绕过 switch 语句中的变量初始化

出于某种目的,我的开关盒中需要一个std:: vector<char>std:: string。因此,我编写了以下虚拟代码来查看它是否有效:

#include <iostream>
#include <string>
int main() {
    int choice = 0;

    do {
        std:: cout << "Enter Choice" << std::endl;
        std:: cin >> choice;

        switch(choice) {
            case 1:
                std::cout << "Hi";
                break;

            case 2:
                std::string str;
                std::cin >> str;
                break;

            case 3: //Compilation error, Cannot jump from switch statement to this case label
                std::cout << "World" << std:: endl;
                break;

            default:
                std:: cout << "Whatever" << std:: endl;
        }

    } while(choice != 5); …
Run Code Online (Sandbox Code Playgroud)

c++ arrays string char switch-statement

6
推荐指数
2
解决办法
4049
查看次数

从十进制转换的二进制中删除前导零

我正在解决一个问题,我必须将给定的前 N ​​个自然数转换为二进制数。我正在使用bitset.to_string()。但是,在数字转换为二进制后,它有一些前导零显然等于给定位集的大小。任务是删除它。我已经做到了,std::string:: erase()但我认为这样做不是一个好方法。如何优化这部分代码?

#include <iostream>
#include <bitset>
#include <string>
int main()
{
    int T;
    std:: cin >> T;
    while(T--) {
    int n;
    std:: cin >> n;
    for(auto i = 1; i <= n; ++i) {
        std::string binary = std::bitset<32>(i).to_string(); //to binary

        //This part here

        int j = 0;
        while(binary[j] == '0') {
            ++j;
        }
        binary.erase(0, j);

        //Till here

        std::cout<<binary<<" ";
    }
    std:: cout << std:: endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ string binary loops bitset

5
推荐指数
1
解决办法
1805
查看次数

C++ 线程中的意外输出

我是线程新手,我编写了一个简单的线程程序来看看它在 C++ 中如何工作。

#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
using namespace std::chrono;

void funcSum(long long int start, long long end)
{
    long long int sum = 0;
    for(auto i = start; i <= end; ++i)
    {
        sum += i;
    }
    cout << sum;
}
int main()
{
    auto startTime = high_resolution_clock::now();
    long long int start = 0, end = 90000;
    thread t1(funcSum, start, end);
    t1.join();
    funcSum(start, end);
    auto stopTime = high_resolution_clock::now();
    auto duration = duration_cast<seconds>(startTime - stopTime); …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

4
推荐指数
1
解决办法
91
查看次数

生成两个随机数,使一个总是大于另一个

我正在对我的函数的以下问题进行压力测试myFunc()

有一座石桥连接两座城市。从一个城市开始的第一块石头上刻有 1,最后一块石头在另一个城市一侧。除了最后一块石头上可能刻有一个或两个数字,这取决于 N 的值,每个后续的石头上都有两个连续的数字。 石头可以排列为 1, (2, 3), (4, 5), ( 6, 7) ... N。

给你一个数字 N,代表最后一块石头上的最后一个数字;和一个数字 X。任务是找到从第一个城市一侧或第二个城市一侧到达刻有 X 的石头所需的最少跳跃次数。注意:在第一块石头上跳跃将计为 0 次跳跃。

示例:输入:2 10 3 5 1

输出:1 0

说明:Testcase 1: Stone Alignment for N = 10 如下: 1, (2, 3), (4, 5), (6, 7), (8, 9), 10 要跳到X = 3,你只需要从第一城一侧跳一次(因为第一次跳石不计算在内),从第二侧跳4次。所以 1 和 4 的最小值是 1。

测试用例 2:N = 5 的石头对齐如下: 1, (2, 3), (4, 5) 要在 X = 1 上跳跃,您只需要从 First 开始零次跳跃(因为第一次石头跳跃不会被计算在内)城边,从第二城边跳2次。所以 0 和 2 的最小值是 …

c++ random algorithm

2
推荐指数
1
解决办法
213
查看次数

C++ 中的lower_bound()

从网上看,我了解到lower_bound()C++中的方法是用来返回一个迭代器,该迭代器指向范围[first, last)中的第一个元素,该元素的值不小于value。这意味着该函数返回下一个刚好大于该数字的最小数字的索引。

所以,对于下面给定的代码,我理解输出是 3。但是,因为有 6 的重复。如何使用lower_bound(). 我可以binary_search()为此实现我自己的,但我想知道如何通过lower_bound().

#include <iostream> 
#include <algorithm>
#include <vector> 

using namespace std; 

int main () 
{ 
    int array[] = {5,6,7,7,6,5,5,6}; 

    vector<int> v(array,array+8); // 5 6 7 7 6 5 5 6 

    sort (v.begin(), v.end()); // 5 5 5 6 6 6 7 7 

    vector<int>::iterator lower,upper; 
    lower = lower_bound (v.begin(), v.end(), 6); 
    upper = upper_bound (v.begin(), v.end(), 6); 

    cout << "lower_bound for 6 at position " << (lower- v.begin()) …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm vector binary-search

2
推荐指数
1
解决办法
426
查看次数

带指针变量的 Sizeof 运算符与数组

我知道该sizeof运算符返回 C/C++ 中任何给定类型的大小。在 C 风格数组中,数组的名称本身就是一个指向数组第一个元素的指针。例如,在 中int arr[2] = {2, 3}*arr将产生2。那为什么sizeof操作符不返回指针变量的大小,而是返回数组在内存中占用的总大小。

看这段代码:

#include <iostream>
using namespace std;

int main()
{
    int arr[10];

    cout << sizeof (arr);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:40字节(给定int需要4字节)

在这段代码中我想问的是,即使arr只是一个指针,那么sizeof如何返回这个数组占用的整个大小?

我自己写了一个sizeof来理解它:

#include <iostream>
using namespace std;

template <typename T>
size_t my_sizeOf(T var)
{
    return (char *) (&var + 1) - (char *) (&var);
}

int main()
{
    int arr[10];

    cout << my_sizeOf(arr);
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ sizeof

1
推荐指数
1
解决办法
621
查看次数