标签: reference

int vs const int&

我注意到我通常使用常量引用作为返回值或参数.我认为原因是它与在代码中使用非引用几乎相同.但它肯定需要更多的空间和功能声明变得更长.我很喜欢这样的代码,但我认为有些人发现它编程风格很糟糕.

你怎么看?是否值得编写const int& over int?我认为无论如何它都是由编译器优化的,所以也许我只是在浪费时间编码,一个?

c++ coding-style const reference

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

在__init__.py - Python/Pycharm中找不到引用'xxx'

我在Pycharm有一个项目组织如下:

-- Sources
   |--__init__.py
   |--Calculators
      |--__init__.py
      |--Filters.py
   |--Controllers
      |--__init__.py
      |--FiltersController.py
   |--Viewers
      |--__init__.py
      |--DataVisualization.py
   |--Models
      |--__init__.py
      |--Data
Run Code Online (Sandbox Code Playgroud)

我的所有__init__.py,除了Sources上面的那个都是空白文件.我收到了很多类似的警告:

在__init__.py中找不到引用'xxx'

例如,我的FiltersController .py有这段代码:

import numpy.random as npr

bootstrap = npr.choice(image_base.data[max(0, x-2):x+3, max(0, y-2):y+3].flatten(), size=(3, 3), replace=True)
Run Code Online (Sandbox Code Playgroud)

我收到这个警告:

在__init__.py中找不到引用'choice'

我在谷歌上搜索这是什么意思,我应该怎么做才能在Python中正确编码.

先感谢您.

python coding-style reference pycharm

57
推荐指数
4
解决办法
7万
查看次数

为什么有些人更喜欢"T const&"而不是"const T&"?

因此,我意识到const T&并且T const&它们是相同的并且都意味着对const T的引用.在这两种情况下,引用也是常量的(与指针不同,引用不能被重新分配).我观察到,在我有点经验的情况下,大多数C++程序员都会使用const T&,但我遇到过一些使用过的人T const&.我const T&之所以使用它只是因为我学到了这一点,所以T const&对我来说看起来有点滑稽.您使用您使用的变体的原因是什么?你们中的任何一个人是否在一个组织工作,其编码标准要求使用一种变体而不是另一种变体?

编辑
根据答案,看来在两者之间进行选择的一个原因是你是想要像编译器(从右到左)还是像英语(从左到右)那样阅读它.如果像编译器一样读取它,则"T const&"读作"&(引用)const(到常量)T(类型T)".如果从左到右读取它像英语,则"const T&"被读作"以引用形式存在的T类型的常量对象".我更喜欢像英文散文一样阅读它,但我当然可以通过编译器的方式来理解它.

没有人回答组织或编码标准问题,但我强烈怀疑大多数组织不会强制要求一个,尽管他们可能会努力保持一致性.

c++ syntax types pointers reference

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

如何使用DBRef查询mongodb

假设我有以下数据结构:

var user = {_id: 'foo', age: 35};
var post = {_id: '...', author: {$ref: user, $id: 'foo'},...};
Run Code Online (Sandbox Code Playgroud)

如何查询引用用户[foo]的所有帖子?我尝试了以下但不工作:

db.post.find('author._id': 'foo');
var u = db.user.find({_id: 'foo'});
db.post.find('author': u);
Run Code Online (Sandbox Code Playgroud)

我也无法从官方文档和谷歌找到答案!

任何人有任何想法?

reference mongodb dbref

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

"引用"和"解除引用"的含义

我在互联网上阅读不同的东西并感到困惑,因为每个网站都说不同的东西.

谈到C.

我读到了*引用运算符&和解引用运算符; 或者引用意味着使指针指向变量,并且解除引用正在访问指针指向的变量的值.所以我很困惑.

我是否可以获得有关"引用和取消引用"的简单但彻底的解释?

c pointers reference dereference

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

有没有一种很好的方法将std :: minmax(a,b)分配给std :: tie(a,b)?

std::tie(a, b) = std::minmax(a, b);
Run Code Online (Sandbox Code Playgroud)

我认为这是直观的代码。干净易懂。太糟糕了,它作为的std::minmax模板无法正常工作const&。因此,如果在内部交换值,则std::pair<const&, const&>一个分配将覆盖另一个值:

auto[a, b] = std::make_pair(7, 5);

std::tie(a, b) = std::minmax(a, b);

std::cout << "a: " << a << ", b: " << b << '\n';
Run Code Online (Sandbox Code Playgroud)

a:5,b:5

此处的预期输出为a: 5, b: 7


我认为这很重要,因为实现转换功能以将功能应用于某些范围需要直观的lambda声明。例如:

std::vector<int> v{ 0, 1, 0, 2, 0 };
std::vector<int> u{ 1, 0, 1, 0, 1 };

perform(v.begin(), v.end(), u.begin(), [](auto& a, auto& b){ 
    std::tie(a, b) = std::minmax(a, b);    
}); 

//v would be == {0, 0, …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm stl reference c++17

56
推荐指数
3
解决办法
2311
查看次数

有没有办法在Visual Studio中基于构建配置指定程序集引用?

我有一个项目,通过他们的API为另一个应用程序添加一些可扩展性.但是,我希望能够为其应用程序的多个版本使用相同的项目,因为大多数代码都是相同的.

但是,每个版本的应用程序都需要引用该版本软件的正确程序集.他们将程序集加载到GAC中,所以即使我可以根据构建配置指定要使用的程序集的版本,我也没关系.有没有办法从VS内部执行此操作,还是需要外部构建工具?

build-process assemblies reference visual-studio

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

如何获取javascript对象引用或引用计数?

如何获取对象的引用计数

  • 是否可以确定javascript对象是否有多个引用
  • 或者如果它除了我正在访问它的那个之外还有引用?
  • 或者甚至只是为了获得引用计数本身?
  • 我可以从javascript本身找到这些信息,还是需要跟踪我自己的参考计数器.

显然,对于我的代码访问对象,必须至少有一个引用它.但我想知道的是,是否有任何其他引用,或者我的代码是唯一访问它的地方.如果没有别的东西引用它,我希望能够删除该对象.

如果您知道答案,则无需阅读本问题的其余部分.以下只是一个让事情更加清晰的例子.


用例

在我的应用程序中,我有一个Repository名为的对象实例contacts,其中包含所有联系人的数组.还有多个Collection对象实例,例如 friends集合和coworkers集合.每个集合都包含一个数组,其中包含一组不同的项目contacts Repository.

示例代码

为了使这个概念更具体,请考虑下面的代码.Repository对象的每个实例都包含特定类型的所有项的列表.您可能拥有联系人存储库和单独的事件存储库.为了简单起见,您可以获取,添加和删除项目,并通过构造函数添加许多项目.

var Repository = function(items) {
  this.items = items || [];
}
Repository.prototype.get = function(id) {
  for (var i=0,len=this.items.length; i<len; i++) {
    if (items[i].id === id) {
      return this.items[i];
    }
  }
}
Repository.prototype.add = function(item) {
  if (toString.call(item) === "[object Array]") { …
Run Code Online (Sandbox Code Playgroud)

javascript garbage-collection reference

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

原始类型和引用类型之间有什么区别?

这是一个过去的考试问题,我想知道什么是原始类型和参考类型?使用数组我知道引用类型是数组由对象或变量组成的位置,但是基本类型是用int或string创建数组的地方.(对?)

您认为您如何回答测试中的问题并获得良好的信誉?没有真正直接引用原始ARRAY类型......有没有办法在没有它的情况下做到这一点?或者你认为用阵列解释它会没问题.

java primitive types reference

54
推荐指数
4
解决办法
15万
查看次数

*&和**&在C++中的含义

我在函数声明中多次发现这些符号,但我不知道它们是什么意思.

例:

void raccogli_dati(double **& V, double **p, int N) { 
  int ultimo = 3; 
  V = new double * [N/2]; 
  for(int i=0; i < N/2; i++) { 
    V[i] = new double[N/2], std :: clog << "digita " << N/2 - i
                 << " valori per la parte superiore della matrice V: "; 
    for(int j=i; j < N/2; j++) 
      std :: cin >> V[i][j], p[ultimo++][0] = (V[i][j] /= sqrt(p[i][0]*p[j][0]));
  } 
  for(int i=1; i < N/2; i++) 
    for(int j=0; j < …
Run Code Online (Sandbox Code Playgroud)

c++ syntax pointers symbols reference

53
推荐指数
6
解决办法
8万
查看次数