小编ato*_*ate的帖子

为什么std :: set似乎强制使用const_iterator?

考虑下面的简单程序,它尝试使用对其中元素的NON-const引用来遍历集合的值:

#include <set>
#include <iostream>

class Int
{
public:
   Int(int value) : value_(value) {}
   int value() const { return value_; }
   bool operator<(const Int& other) const { return value_ < other.value(); }
private:
   int value_;
};

int
main(int argc, char** argv) {
   std::set<Int> ints;
   ints.insert(10);
   for (Int& i : ints) {
      std::cout << i.value() << std::endl;
   }
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译时,我从gcc收到错误:

test.c: In function ‘int main(int, char**)’:
test.c:18:18: error: invalid initialization of reference of type ‘Int&’ from expression of type …
Run Code Online (Sandbox Code Playgroud)

c++ stdset c++11

34
推荐指数
4
解决办法
3211
查看次数

当通过符号链接访问时,bash似乎忽略了BASH_ENV

我在UNIX环境中工作,其中/bin设置如下:

-rwxr-xr-x  1 root root 617144 Nov 19  2009 bash
lrwxrwxrwx  1 root root      4 Nov 23  2010 sh -> bash
Run Code Online (Sandbox Code Playgroud)

在我的环境中,我已经设置$BASH_ENV为指向我的本地.bashrc:

env | grep BASH
BASH_ENV=/home/users/atomicpirate/.bashrc
Run Code Online (Sandbox Code Playgroud)

另外,.bashrc作为它的第一行echo BASHRC READ.

我希望/ bin/sh和/ bin/bash的行为与此设置完全相同......但它们不会:

/bin/bash -c 'echo $BASH_ENV'
BASHRC READ
/home/users/atomicpirate/.bashrc

/bin/sh -c 'echo $BASH_ENV'
/home/users/atomicpirate/.bashrc
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,不读取.bashrc.知道为什么会这样吗?似乎符号链接打破了$ BASH_ENV的预期行为.

bash symlink non-interactive

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

标签 统计

bash ×1

c++ ×1

c++11 ×1

non-interactive ×1

stdset ×1

symlink ×1