小编fja*_*don的帖子

在Mintty的cygwin窗口缓冲区中搜索

如何在cygwin窗口缓冲区中进行文本搜索?有没有办法在Windows控制台缓冲区(右键单击>搜索)中进行相同类型的文本搜索?

(我用的是薄荷)

cygwin mintty

10
推荐指数
2
解决办法
2802
查看次数

glibcxx STL在std :: valarray :: sum()的实现中是否不正确?

当我遇到一些我认为是编译器STL实现中的错误时,我正在玩valarrays.这是我可以生成的最小的例子:

#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
#include <valarray>

using namespace std;

int main()
{
    valarray<int> Y(0xf00d, 1);
    valarray<valarray<int>> X(Y, 1);
    cout << "Y[0]           = " << std::hex << Y[0]       << '\n';
    cout << "X[0][0]        = " << std::hex << X[0][0]    << '\n';
    cout << "X[0].size()    = " << X[0].size()            << '\n';
    cout << "X.sum().size() = " << X.sum().size()         << '\n';
}
Run Code Online (Sandbox Code Playgroud)

这将输出:

$ g++ -std=c++17 -O2 -Wall -pedantic -pthread main.cpp && ./a.out
Y[0]           = f00d …
Run Code Online (Sandbox Code Playgroud)

c++ gcc valarray

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

为什么 std::basic_istream::ignore() 提取的字符多于指定的字符?

我有以下代码:

#include <iomanip>
#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main(int argc, char* argv[]) {
    stringstream buffer("1234567890 ");
    cout << "pos-before: " << buffer.tellg() << endl;
    buffer.ignore(10, ' ');
    cout << "pos-after: " << buffer.tellg() << endl;
    cout << "eof: " << buffer.eof() << endl;
}
Run Code Online (Sandbox Code Playgroud)

它产生这个输出:

pos-before: 0
pos-after: 11
eof: 0
Run Code Online (Sandbox Code Playgroud)

我希望pos-after10而不是11。根据规范,当设置以下任一条件时, ignore方法应停止:

  1. 提取了计数字符。在计数等于的特殊情况下禁用此测试std::numeric_limits<std::streamsize>::max()
  2. 文件结束条件出现在输入序列中,在这种情况下,函数调用 setstate(eofbit)
  3. 输入序列中的下一个可用字符 c 是 delim,由 确定Traits::eq_int_type(Traits::to_int_type(c), delim)。分隔符被提取并丢弃。如果 delim 是Traits::eof() …

c++ iostream

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

图中的最短路径,当必须跳过每一秒的边缘时

我一直在为编程竞赛做准备,我偶然发现了这个问题,我必须在加权和无向图中找到从源到目的地的最短路径,但我必须跳过每一秒的边缘(所以它的重量并不重要) .图中的权重是正整数.

原始声明:

克拉拉和杰克正在旅途中.他们轮流驾驶,每个城市之后都会改变汽车司机.找到从源头到目的地的最短路径,克拉拉开出最少的里程.写第一个应该是汽车司机的人.

解决这个问题的最佳方法是什么?是否有任何修改任何算法来轻松解决?

编辑:跳跃的边缘的权重等于0,如果可以跳过边缘,我必须检查两个选项.

algorithm graph shortest-path

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

在标准(C++ 11)中,它表示余数运算符仅适用于整数类型?

我想在标准(n3242/3291/3290)中指定一个指针,其中定义了余数运算符不适用于浮点类型.

余数运算符%5.6.2中定义

二元/运算符产生商,二元%运算符从第一个表达式除以第二个表达式得到余数.如果/或%的第二个操作数为零,则行为未定义.对于积分操作数,如果商a/b在结果的类型中可表示,则/运算符产生代数商,其中任何小数部分被丢弃,(a/b)*b + a%b等于a.

我找不到禁止使用浮点类型的地方.标准明确将其integral operands视为特殊情况的事实可以解释为:运算符存在于其他非整数类型中.

我知道MSVC和GCC不接受它,我看了很多关于这个问题的答案,但是我无法在C++ 11标准中获得有效的指针.

c++ language-lawyer c++11

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

C++ 中大型 mod 的模取幂失败

这是我用于计算的代码(n^p)%mod。不幸的是,当我从方法调用它时,它对于mod(在我的情况下mod = 10000000000ULL)的大值失败main()。任何的想法; 为什么?

ull powMod(ull n, ull p, ull mod) {
    ull ans = 1;
    n = n%mod;
    while(p) {
        if(p%2 == 1) {
            ans = (ans*n)%mod;
        }
        n = (n*n)%mod;
        p /= 2;
    }
    return ans;
}
Run Code Online (Sandbox Code Playgroud)

这里,ull是一个 typedef unsigned long long

c++ algorithm cryptography exponentiation modular-arithmetic

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

如何生成仅包含 2 种数字的第 n 个数字?

我们将特殊数字定义为仅包含 4 和 7 的数字。

让我们来看看例子:447477444777特殊号码,而407不是。

我需要帮助来了解生成 特殊数字的法律/规则是什么Nth

我尝试了下面的代码,但没有用

int x[2000];
int k=0;

void dfs( int a ) {
  if(k==1021)
    return;
  x[k++]=a;
  dfs(a*10+4);
  dfs(a*10+7);
}

dfs(4);
dfs(7);
Run Code Online (Sandbox Code Playgroud)

关于如何做到这一点的任何解决方案或想法?

algorithm c++11

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

为每个学生分配最少的页数

请任何人都可以提供正确的算法来解决这个问题.不是代码只是算法.谢谢.

你有N本书.每本ith书都有Pi页数.您必须为M个学生分配书籍,以便最大限度地分配给学生的最大页数.一本书将分配给一名学生.每个学生必须至少分配一本书.

注意:如果无法进行有效分配,则返回-1,并且分配应按连续顺序排列.

这是问题陈述的链接.

algorithm

3
推荐指数
2
解决办法
4342
查看次数