小编jon*_*han的帖子

有人可以解释一下笛卡尔积在关系代数中的作用

在这里

选择和交叉产品

交叉产品是评估最昂贵的运营商.如果输入关系具有N和M行,则结果将包含NM行.因此,在应用交叉乘积运算符之前,尽量减小两个操作数的大小非常重要.

假设我们有2个关系

第一个关系称为Student,因此具有3个属性

    student
  |a |b   |c |
  ------------
  |__|___|___|
  |__|___|___|
  |__|___|___|
Run Code Online (Sandbox Code Playgroud)

第二个关系是大学,再次有3个属性

   university
  |e |f   |g |
  ------------
  |__|___|___|
  |__|___|___|
  |__|___|___|
Run Code Online (Sandbox Code Playgroud)

每个关系我们有3行,所以在应用了叉积运算后,我们将得到一个3*3 = 9行的关系

现在,我不明白,为什么9而不是3?

不会是最终的关系

 final relation
 |a |b   |c |d |e   |f |g |
 --------------------------
 |__|___|___|__|____|__|__|
 |__|___|___|__|____|__|__|
 |__|___|___|__|____|__|__|
Run Code Online (Sandbox Code Playgroud)

这不再有3行吗?

谢谢

relational-algebra cartesian-product

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

如何在bash脚本中逐行读取文件?

我在网上搜索过这个问题,到目前为止我找到了两种方法:

   while read line; do
      commands
   done < "$filename"
Run Code Online (Sandbox Code Playgroud)

    for $line in $(cat $filename); do
       commands
    done
Run Code Online (Sandbox Code Playgroud)

如果线条有空格,这些都不起作用,例如,如果我们有这样的线条

  textextext text
Run Code Online (Sandbox Code Playgroud)

它不会打印 textextext text

  textextext
  text
Run Code Online (Sandbox Code Playgroud)

它将这些事情视为一条不同的路线,我怎样才能避免这种情况发生?

bash scripting file line

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

我无法理解为什么这个程序打印8762作为结果

可能重复:
可以在其范围之外访问局部变量的内存吗?

#include <iostream>

double *foo(){
    double *varFoo = new double;
    double temp = 8762;
    varFoo = &temp;

    return varFoo;
}

int main(void){

    double *newVar = foo();
    std::cout<<*newVar<<std::endl;
    std::cin.get(); 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道指针varFoo将在堆中创建,因此将保持在那里直到我调用delete,但是在函数foo中的temp变量呢?

它是一个局部变量,一旦foo函数的调用结束,临时变量的值将被存储的地址将被释放吗?

那么为什么我得到8762而不是垃圾呢?

谢谢

c++ heap pointers

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