小编Fih*_*hop的帖子

如何获取txt文件中的最后一行但不是空行

我想在txt文件中获取最后但不是空行.

这是我的代码:

string line1, line2;
ifstream myfile(argv[1]);
if(myfile.is_open())
{
    while( !myfile.eof() )
    {
        getline(myfile, line1);
        if( line1 != "" || line1 != "\t" || line1 != "\n" || !line1.empty() )
            line2 = line1;
    }
    myfile.close();
}
else
    cout << "Unable to open file";
Run Code Online (Sandbox Code Playgroud)

问题是我无法检查空行.

c++

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

返回内置类型的const值

返回内置类型的const值是一个很好的习惯吗?

原因是:

const int F()
{
}

int y;
F(x) = y;
Run Code Online (Sandbox Code Playgroud)

如果返回值为const,则上述代码将无法编译.但如果不是,F(x) = y;则是一个非常隐蔽的错误.

由于没有意义为函数赋值,我认为总是为内置类型返回一个const值是一个很好的习惯吗?如果我总是返回内置类型的const值,有什么问题吗?

c++ const

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

如何使用Orwell Dev-C++编译C++ 11代码?

尝试编译以下代码:

#include <iostream>
#include <memory>

struct Foo {
    Foo() { std::cout << "Foo::Foo\n"; }
    ~Foo() { std::cout << "Foo::~Foo\n"; }
    void bar() { std::cout << "Foo::bar\n"; }
};

void f(const Foo &foo)
{
    std::cout << "f(const Foo&)\n";
}

int main()
{
    std::unique_ptr<Foo> p1(new Foo);  // p1 owns Foo
    if (p1) p1->bar();

    {
        std::unique_ptr<Foo> p2(std::move(p1));  // now p2 owns Foo
        f(*p2);

        p1 = std::move(p2);  // ownership returns to p1
        std::cout << "destroying p2...\n";
    }

    if (p1) p1->bar();

    // Foo instance is …
Run Code Online (Sandbox Code Playgroud)

c++ dev-c++ unique-ptr c++11

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

给定二叉树中的垂直和

给定二叉树,找到同一垂直线上的节点的垂直和.通过不同的垂直线打印所有总和.

要了解同一垂直线是什么,我们需要先定义水平距离.如果两个节点具有相同的水平距离(HD),则它们位于同一垂直线上.HD的想法很简单.根的HD为0,右边缘(连接到右子树的边缘)被认为是+1水平距离而左边缘被认为是-1水平距离.例如,在上面的树中,节点4的HD为-2,节点2的HD为-1,5和6的HD为0,节点7的HD为+2.

例子:

    1
  /   \
 2     3
/ \   / \
4  5  6  7
Run Code Online (Sandbox Code Playgroud)

树有5条垂直线

Vertical-Line-1只有一个节点4 => vertical sum是4

Vertical-Line-2:只有一个节点2 =>垂直和是2

Vertical-Line-3:有三个节点:1,5,6 =>垂直和是1 + 5 + 6 = 12

Vertical-Line-4:只有一个节点3 =>垂直和为3

Vertical-Line-5:只有一个节点7 =>垂直和是7

因此预期产量为4,2,12,3和7

我的解决方案: 我想出了这个问题的ao(nlong(n))解决方案.这个想法是:

(1)使用preorder遍历获取每个节点的HD,并将HD及其相关节点存储在一个数组中.

(2)通过HD对数组进行排序

(3)遍历排序数组以打印结果.

我敢肯定这不是解决这个问题的最好方法.有人能帮我提供更好的解决方案吗?

algorithm binary-tree data-structures

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

最长的子阵列,其元素按顺序递增?

给定数组= {1 2 3 3 2 4 6 7}

增长最长的子阵列是2 4 6 7.注意,这与最长的增加子序列不同,因为值必须是连续的.

这个问题有没有O(n)解决方案?

arrays algorithm

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

c ++中的new运算符

我正在阅读"Thinking in c ++"的第13章.以下内容来自本书.

MyType*fp = new MyType(1,2);

在运行时,调用malloc(sizeof(MyType))的等价物,使用(1,2)作为参数列表调用MyType的构造函数,并将结果地址作为this指针.到指针指向fp时.

我对这句大胆的句子感到困惑.这是什么意思?

c++ new-operator

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

在一个字符串中移动一个单词,其中空格作为单词之间的分隔符

让我用一个例子更详细地解释我的问题.

给定一个字符串:

"在几个连续的单词开头,辅音是重复相同的元音"

如果我们想将第四个单词(重复单词)移动到第二个单词的位置,则该字符串将变为:

"辅音重复是几个连续单词开头的同一个元音"

给定一个C原型如下的函数:

void move(char *s, int word_begin_ind, int word_end_ind, int target_begin_ind)
Run Code Online (Sandbox Code Playgroud)

如何实现这个功能来完成这项工作?

在上面的例子中, word_begin_ind = 17, word_end_ind = 27, target_begin_ind = 10

这不是作业.实际上这是一个面试问题.我有一个算法.基本思路如下:

(1)使用word_begin_ind和制作目标词的副本word_end_ind.

(2)从target_begin_indword_begin_ind - 1,每个字符移动到正确的位置.例如,移到word_begin_ind-1'word_end_ind',word_begin_ind-2'word_end_ind-1'等等.

(3)最后,将副本移动到正确的位置(从target_begin_ind开始).

我希望每个人都能理解我的要求.

您不需要使用c来完成这项工作.C++也很受欢迎.

谁能帮我找到其他解决方案?

c c++ string

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

在apache spark sql中缓存表

从Spark官方文档中可以看出:

Spark SQL可以通过调用sqlContext.cacheTable("tableName")或dataFrame.cache()来使用内存中的列式格式来缓存表.然后,Spark SQL将仅扫描所需的列,并自动调整压缩以最小化内存使用和GC压力.您可以调用sqlContext.uncacheTable("tableName")从内存中删除该表.

使用内存中柱状格式缓存表的真正含义是什么?把整个表放入内存?由于我们知道缓存也是惰性的,因此在查询的第一个操作之后缓存该表.如果选择不同的操作或查询,它对缓存表有什么影响吗?我已经多次搜索过这个缓存主题,但未能找到一些详细的文章.如果有人能为这个主题提供一些链接或文章,我将非常感激.

http://spark.apache.org/docs/latest/sql-programming-guide.html#caching-data-in-memory

caching apache-spark apache-spark-sql

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

"破解编码访谈(第五版)":9.10框堆叠

你有一堆n个盒子,宽度为wi,高度为hi,深度为di.如果堆叠中的每个盒子的宽度,高度和深度都大于或等于其上方的盒子,则盒子不能旋转并且只能堆叠在一起.实现一种方法来构建最高的堆栈,其中堆栈的高度是每个盒子高度的总和.

我知道有几篇文章要讨论使用动态编程来解决它.由于我想编写递归代码,我编写了以下代码:

const int not_possible = 999999;

class box{
public:
    int width;
    int depth;
    int height;
    box(int h=not_possible, int d=not_possible, int w=not_possible):
        width(w), depth(d), height(h) {}
};


bool check_legal(box lower, box upper){
    return (upper.depth<lower.depth) && 
           (upper.height<lower.height) &&
           (upper.width<lower.width);
}

void highest_stack(const vector<box>& boxes, bool* used, box cur_level, int num_boxes, int height, int& max_height)
{
    if(boxes.empty())
        return;

    bool no_suitable = true;
    for(int i = 0; i < num_boxes; ++i){
        box cur;
        if(!(*(used+i)) && check_legal(cur_level, boxes[i])){
            no_suitable = false;
            cur = boxes[i]; …
Run Code Online (Sandbox Code Playgroud)

algorithm recursion dynamic-programming

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

获取 Yarn 应用程序的内存、CPU 和磁盘使用情况

我想问一下,在运行 Yarn 应用程序后,如何获得该应用程序的总内存和 CPU 使用率。

我曾经使用资源管理器 UI 来获取所有信息。但是除了从 UI 获取这些信息之外,还有什么命令可以用来获取这些信息。

memory mapreduce cpu-usage hadoop-yarn

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

为什么Perl在使用-I开关时没有找到我的脚本?

我用Google搜索了一种做这种事情的方法.

我用这个shell命令:

perl -I/p2 maxconnect4.p1 arg1 arg2 arg3 arg4
Run Code Online (Sandbox Code Playgroud)

我的pl文件和pm文件都在"p2"目录中.

但是,它给了我一个错误:

Can't open perl script "maxconnect4.pl": No such file or directory
Run Code Online (Sandbox Code Playgroud)

有谁能解释为什么?

shell perl command

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