相关疑难解决方法(0)

遍历C ++中的非常量变量

#include <initializer_list>

struct Obj {
    int i;
};

Obj a, b;

int main() {
    for(Obj& obj : {a, b}) {
        obj.i = 123;   
    }
}
Run Code Online (Sandbox Code Playgroud)

该代码无法编译,因为来自的值initializer_list {a, b}被当作const Obj&,并且不能绑定到非const引用obj

是否有一种简单的方法可以使类似的构造工作,即遍历像like abhere 这样的不同变量中的值。

c++ initializer-list

41
推荐指数
3
解决办法
2175
查看次数

C++帮助在地图中查找最大值

我一直在做基本程序来找到矢量的最大值,最小值,中值,方差,模式等.一切都很顺利,直到我进入模式.

我看到它的方式,我应该能够循环遍历向量,对于每个出现的数字,我在地图上增加一个键.找到具有最高值的密钥将是发生最多的密钥.与其他键相比,它会告诉我它是单个多重模式还是无模式答案.

这是导致我如此麻烦的代码块.

map<int,unsigned> frequencyCount;
// This is my attempt to increment the values
// of the map everytime one of the same numebers 
for(size_t i = 0; i < v.size(); ++i)
    frequencyCount[v[i]]++;

unsigned currentMax = 0;
unsigned checked = 0;
unsigned maax = 0;
for(auto it = frequencyCount.cbegin(); it != frequencyCount.cend(); ++it )
    //checked = it->second;
    if (it ->second > currentMax)
    {
        maax = it->first;
    }
    //if(it ->second > currentMax){
    //v = it->first

cout << " The highest value …
Run Code Online (Sandbox Code Playgroud)

c++ dictionary vector mode max

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

什么是悲观?

关于这个问题的评论可以使用C++ 11来auto提高性能吗?获得了很多选票,并暗示"让它不太可能无意中感到悲观"作为答案.我以前从未注意过这个词.我想这与优化相反.

任何人都可以给出更详细的定义吗?在编程环境中它意味着什么?如何使代码看起来像悲观?

c++ language-agnostic optimization

12
推荐指数
3
解决办法
3661
查看次数

在编译时,`auto`说明符是否较慢?

从C++ 11开始,我们可以使用auto a = 1+2而不是int a = 1+2编译器,并且编译器会a自行推断出类型.它是如何工作的?编译时(更多操作)比自己声明类型更慢吗?

c++ types compile-time auto c++11

11
推荐指数
3
解决办法
2101
查看次数

使用Auto与Eigen的错误结果

我使用auto得到了不同的结果,并Vector在求和两个向量时使用.

我的代码:

#include "stdafx.h"
#include <iostream>
#include "D:\externals\eigen_3_1_2\include\Eigen\Geometry"

typedef Eigen::Matrix<double, 3, 1>       Vector3;

void foo(const Vector3& Ha, volatile int j) 
{
    const auto resAuto = Ha + Vector3(0.,0.,j * 2.567);
    const Vector3 resVector3 = Ha + Vector3(0.,0.,j * 2.567);

    std::cout << "resAuto = " << resAuto <<std::endl;
    std::cout << "resVector3 = " << resVector3 <<std::endl;
}

int main(int argc, _TCHAR* argv[])
{
    Vector3 Ha(-24.9536,-29.3876,65.801);
    Vector3 z(0.,0.,2.567);

    int j = 7;

    foo(Ha,j);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果:

resAuto = -24.9536,-29.3876,65.801 …

eigen c++11

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

不存储中间结果时,本征给出错误结果

为牛顿法编写一个实现雅可比矩阵的函数,我注意到一个非常严重的错误。

调用函数

auto DF = [T](VectorXd y){
    return PhiAndW(y(0),y(1),T).second - MatrixXd::Identity(2,2);
 };
Run Code Online (Sandbox Code Playgroud)

只返回 的值PhiAndW(y(0),y(1),T).second并省略 的减法MatrixXd::Identity(2,2)。但是如果我将代码更改为

auto DF = [T](VectorXd y){
    MatrixXd mat = PhiAndW(y(0),y(1),T).second - MatrixXd::Identity(2,2);
    return mat;
 };
Run Code Online (Sandbox Code Playgroud)

一切顺利。

我试图重现它,这不是完全相同的行为,但它的行为也不如预期:

考虑以下代码:

MatrixXd FF(MatrixXd y){
  return y;
}

int other(){

  auto DF = [](MatrixXd y){
    MatrixXd test = FF(y)  - MatrixXd::Identity(2,2);
    return test;
  };

  std::cout << DF(MatrixXd::Ones(2,2)) <<std::endl;
  std::cout << std::endl;
  std::cout << (MatrixXd::Ones(2,2) - MatrixXd::Identity(2,2))<< std::endl;

}
Run Code Online (Sandbox Code Playgroud)

它会打印

>  1 0
>  0 1 
> …
Run Code Online (Sandbox Code Playgroud)

c++ eigen

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

使用 C++11 的“自动”会降低性能甚至破坏代码吗?

这个问题与现有问题“使用 C++11 的‘自动’能否提高性能? ”相反。

该问题的一个答案表明,使用auto不仅会产生积极的影响,还会产生消极的影响。

我相信我们需要一个单独的问题,答案集中在auto.

c++ lazy-evaluation auto c++11

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