小编Shr*_*han的帖子

std :: next_permutation实现说明

我很好奇如何std:next_permutation实现,所以我提取了gnu libstdc++ 4.7版本并清理了标识符和格式以生成以下演示...

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

using namespace std;

template<typename It>
bool next_permutation(It begin, It end)
{
        if (begin == end)
                return false;

        It i = begin;
        ++i;
        if (i == end)
                return false;

        i = end;
        --i;

        while (true)
        {
                It j = i;
                --i;

                if (*i < *j)
                {
                        It k = end;

                        while (!(*i < *--k))
                                /* pass */;

                        iter_swap(i, k);
                        reverse(j, end);
                        return true;
                }

                if (i == begin) …
Run Code Online (Sandbox Code Playgroud)

c++ permutation lexicographic stl-algorithm c++11

100
推荐指数
4
解决办法
3万
查看次数

根据内容溢出动态插入分页符

我有一个通过许多Vue组件生成的大型网页.渲染的HTML结构有点类似于:

<header></header>
<element1></element1>
<element2></element2>
<element3></element3>
<table></table>
<element4></element4>
<footer></footer>
Run Code Online (Sandbox Code Playgroud)

我想在A5页面上很好地打印这个页面headerfooter在每个打印页面上重复.我用2种方法试过这个:

将HTML结构转换为页面容器并基于总计分割元素clientHeight.就像是

<section class="page">
    <header></header>
    <element1></element1>
    <element2></element2>
    <element3></element3>
    <footer></footer>
</section>
<section class="page">
    <header></header>
    <table></table>
    <element4></element4>
    <footer></footer>
</section>
Run Code Online (Sandbox Code Playgroud)

或者,将CSS分页符属性添加到header内容溢出位置并动态插入.例如

<header></header>
<element1></element1>
<element2></element2>
<element3></element3>
<footer></footer>
<header style="page-break-before: always"></header>
<table></table>
<element4></element4>
<footer></footer>
Run Code Online (Sandbox Code Playgroud)

DOM遍历找到溢出点的样子

var availHeight = 20;    // Height of A5 page - tolerance
var body = document.querySelector('body');
var initialWidth = body.style.width;
body.style.width = '14.85cm';

if (body.clientHeight > availHeight) {    // if content exceeds page height
    var …
Run Code Online (Sandbox Code Playgroud)

html javascript css vue.js

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

C++,按数字读取文件行

我想制作通过数字读取文件的控制台项目.示例:按数字1 2查找,它仅在包含这些数字的文件夹的控制台文本行中打印

   bibi                ceki     1     2
 hasesh              cekiii     1     3
   krki                 cko     1     2
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它只会打印出"bibi ceki"和"krki cko".在我的代码中有许多遗漏的东西.我没有一个循环来检查是否有正确的数字,但这是我能做的最好和我尝试过的:

#include <fstream>
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;

int main() {
    char str1[10], str2[10];
    int raz, ode;
    ifstream infile("file.txt");
    while (infile.good()) {
        fscanf(infile, "%s %s %d %d", str1, str2, &raz, &ode); //this thing cant be used lik this 
        while(raz==1 && ode==2) {
            string sLine;
            getline(infile, sLine);
            cout << sLine << endl;
        }
    }
    infile.close();
    return 0; …
Run Code Online (Sandbox Code Playgroud)

c++ ifstream

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

这个Core java Code的输出是什么?

public void getData(Object o[]) {
    System.out.println("In Side Array");
}

public void getData(Object o) {
    System.out.println("In Side Object");
}

public static void main(String[] args) {
    new JavaEx().getData(null);
}
Run Code Online (Sandbox Code Playgroud)

这里是打印数组块为什么,为什么它不打印对象块?

java

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

有没有办法欺骗std :: make_shared使用默认初始化?

您应该使用std::make_shared以确保带有计数器的块存储在数据旁边.不幸的是,内部std::make_shared<T>使用零初始化T(即用于T()初始化数据块).有没有办法欺骗它使用默认初始化?我知道我可以使用std::shared_ptr<T>( new T, [](auto p){delete p;}),但我最终会得到两个分配(数据和计数器块不会彼此相邻).

c++ c++11 c++14

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

brk和sbrk之间的区别

我这个新的任何一个可以告诉之间准确的区别brksbrk使用一个简单的例子?是否有任何效率因素可供选择? mallocnew内部调用brksbrk.

c unix

4
推荐指数
2
解决办法
5964
查看次数

编写特定于版本的C++代码以检测std命名空间中的符号

在我最近的QA中,is_same由于标准版本是C++ 11的一部分,我被建议为C++ 03 实现自己的QA.实施是

template <typename T, typename U>
struct is_same {
    static const bool value = false;
};

template <typename T>
struct is_same <T, T> {
    static const bool value = true;
};
Run Code Online (Sandbox Code Playgroud)

我希望只有在std命名空间中没有定义时才应该使用它.例如,它可以包装在这样的预处理器块中吗?

#if !defined(std::is_same)
// define is_same here
#endif
Run Code Online (Sandbox Code Playgroud)

我想避免这些错误

错误:'is_same'不是'std'// C++ 03的成员

错误:对'is_same'的引用不明确// C++ 11

c++ visual-c++

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

在C++中对命令行参数进行排序

我想排序一系列命令行参数.所有参数都是整数.这是我的代码,但它不起作用.

#include <iostream>
using namespace std;

int main (int argc, char *argv[]) {
    for (int i=0; i<argc-1; ++i) {
        int pos = i;
        for (int j=i+1; j<argc; ++j) {
            if (argv[j] - '0' < argv[pos] - '0') {
                pos = j;
            }
        }
        char *tempt = argv[i];
        argv[i] = argv[pos];
        argv[pos] = tempt;
    }
    for (int i=0; i<argc; ++i) {
        cout << argv[i] <<endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译完成后,当我打电话时./a.out 4 3 2 1,它仍然会打印4 3 2 1到屏幕而不是1 2 …

c++

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

当我们不知道它的大小时,如何为类型分配内存?

只是一个简单的问题.我想接收一些整数并将其放入一个数组但我不知道它的大小,因为它是由用户给出的输入预计如下:1 2 3 4 5

#include <iostream>
using namespace std;
int main()
{
    int *contain;
    int y;
    int i=0;
    char c;

    while(true)
    {
        cin>>contain[i];
        i++;
        c=getchar();
        if(c=='\n')
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ arrays io

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

我可以使用`typedef`或`using`来改变`int arr [N]`的含义吗?

我怎么能写一个模板化的,typedef或者using这样的

int arr[N];
Run Code Online (Sandbox Code Playgroud)

实际上也是

std::vector<int> arr(N);    /// C++03
Run Code Online (Sandbox Code Playgroud)

要么

std::array<int, N> arr;    /// C++11
Run Code Online (Sandbox Code Playgroud)

我听了这个回答.我可以写一些类似的东西

template <std::size_t N>
using int[N] = std::array<int, N>;
Run Code Online (Sandbox Code Playgroud)

或模板化的typedef

template <std::size_t N>
typedef int std::array<int, N> [N];
Run Code Online (Sandbox Code Playgroud)

此外,我希望与char[]和相同std::string.可能吗 ?

编辑这就是我想要做的

int arr[10];    // Declare an int array but use it as std::vector
arr.resize(20);
...   // Other methods from std::vector class
Run Code Online (Sandbox Code Playgroud)

c++ c++11

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