小编edw*_*019的帖子

为什么不同的vector <bool>元素共享相同的地址?

我定义了以下课程。

class STTreeNode
{
public:
    int ind;
    int parentInd;  
    std::vector<int> childInds;

    int numTrain;
    std::vector<bool> isInfluenced;

    STTreeNode(int ind, int parentInd, int numTrain);
};

STTreeNode::STTreeNode(int ind, int parentInd, int numTrain) {
    this->ind = ind;
    this->parentInd = parentInd;
    this->numTrain = numTrain;
}

Run Code Online (Sandbox Code Playgroud)

我运行了以下代码段。

STTreeNode *a = new STTreeNode(3, 4, 5);
a->childInds.push_back(20);
a->childInds.push_back(30);
a->isInfluenced.push_back(true);
a->isInfluenced.push_back(false);

for (int i = 0; i < a->childInds.size(); i++)
    std::cout << &(a->childInds[i]) << " ";
std::cout << std::endl;
for (int i = 0; i < a->isInfluenced.size(); i++)
    std::cout << …
Run Code Online (Sandbox Code Playgroud)

c++

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

C / C ++中的整数除法会导致精度问题吗?

假设我们有三个整数(int,long,long long,unsigned int等)a, b, c。通常情况下,

c = a / b;
Run Code Online (Sandbox Code Playgroud)

会导致分数截断。但是,c最终可能会得出不正确的值吗?

我不是在说a / b可能超出范围,c's type.而是在C中如何实现整数除法。执行a / b首先生成浮点型中间结果,然后中间值被截断吗?

如果是这样,我想知道中间值精度的损失是否会导致c的值不正确。例如,假设a / b的精确值为2,但中间结果为1.9999...,则c最终将得出不正确的值1。这种情况会发生吗?期望值在c的类型范围内?

c c++

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

标签 统计

c++ ×2

c ×1