小编Bil*_*ill的帖子

在Perl中,是否有内置的方法来比较两个数组的相等性?

我有两个字符串数组,我想比较相等:

my @array1 = ("part1", "part2", "part3", "part4");
my @array2 = ("part1", "PART2", "part3", "part4");
Run Code Online (Sandbox Code Playgroud)

是否有内置的方法来比较数组,就像标量一样?我试过了:

if (@array1 == @array2) {...}
Run Code Online (Sandbox Code Playgroud)

但它只是在标量上下文中评估每个数组,因此比较了每个数组的长度.

我可以使用自己的函数来完成它,但它看起来像是一个低级操作,应该有一个内置的方法来做它.在那儿?

编辑:遗憾的是,我无法访问5.10+或可选组件.

arrays perl compare match

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

什么时候"和"成为C++中的运算符

我有一些看起来像的代码:

static const std::string and(" AND ");
Run Code Online (Sandbox Code Playgroud)

这会导致g ++中的错误,如下所示:

Row.cpp:140: error: expected unqualified-id before '&&' token
Run Code Online (Sandbox Code Playgroud)

所以在诅咒将"和"定义为&&的傻瓜后,我补充道

#ifdef and
#undef and
#endif
Run Code Online (Sandbox Code Playgroud)

现在我明白了

Row.cpp:9:8: error: "and" cannot be used as a macro name as it is an operator in C++
Run Code Online (Sandbox Code Playgroud)

这导致我的问题是什么"和"成为C++中的运算符?我找不到任何表明它的东西,当然除了来自g ++的这条消息

c++ g++

27
推荐指数
5
解决办法
5144
查看次数

提升图书馆格式; 获取std :: string

我想添加一些我使用boost库格式化的字符串,如下所示

boost::container::vector<std::string> someStringVector;
someStringVector.push_back(
    format("after is x:%f y:%f and before is x:%f y:%f\r\n") % 
    temp.x %
    temp.y %
    this->body->GetPosition().x %
    this->body->GetPosition().y;
Run Code Online (Sandbox Code Playgroud)

编译器抱怨它无法转换类型,我尝试将.str()附加到格式返回的末尾,但它仍然抱怨.

我得到的错误信息是:

error C2664: 'void boost::container::vector<T>::push_back(
  const std::basic_string<_Elem,_Traits,_Ax> &)' :
  cannot convert parameter 1 from
    'boost::basic_format<Ch>' to 
    'const std::basic_string<_Elem,_Traits,_Ax> &'
Run Code Online (Sandbox Code Playgroud)

有人有见识吗?

c++ boost

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

哪里可以获得纯C++ Lame MP3编码器 - PCM到MP3的例子?

所以我只需要一个简单的功能来设置它(吃掉传入的PCM速率(例如:速率接近44100)它的通道(例如:2)和-bits(例如:16)和所需的128 kb\s速率另一个采用PCM数据并将其编码为纯MP3帧的数据.

我知道这看起来像是一项愚蠢的家庭作业,但我向你保证 - 事实并非如此.

我希望它能帮助所有从MP3开始的C++开发人员.

所以有人可以帮助我吗?

c++ mp3 lame

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

编译器优化"常量传播"是什么意思?

来自Scott Meyers的Effective C++:

template<typename T, std::size_t n>
class SquareMatrix: private SquareMatrixBase<T> {

public:

    SquareMatrix( ) 
     : SquareMatrixBase<T>(n, 0), 
       pData(new T[n*n]) 
    {
         this->setDataPtr(pData.get()); 
    } 

        ...
private:

    boost::scoped_array<T> pData;
};
Run Code Online (Sandbox Code Playgroud)

无论数据存储在何处,从膨胀的角度来看,关键结果是,现在很多 - 也许全部 - SquareMatrix的成员函数可以是对基类版本的简单内联调用,这些基类版本与所有其他具有相同类型的矩阵共享数据,无论其大小.同时,不同大小的SquareMatrix对象是不同的类型,所以即使例如SquareMatrix <double,5>和SquareMatrix <double,1 0>对象在SquareMatrixBase <double>中使用相同的成员函数,也没有机会将SquareMatrix <double,5>对象传递给期望SquareMatrix <double,1 0>的函数.很好,不是吗?

很好,是的,但不是免费的.具有硬连线的矩阵大小的反转版本可能比共享版本生成更好的代码,其中大小作为函数参数传递或存储在对象中.例如,在特定于大小的版本中,大小将是编译时常量,因此有资格进行常量传播等优化,包括将它们作为立即操作数折叠到生成的指令中.这不能在与大小无关的版本中完成.

在上一段的上述描述中,它被称为"因此有资格进行恒定传播等优化,包括将它们作为立即操作数折叠到生成的指令中".这个陈述是什么意思?请来解释一下.

谢谢!

c++ templates code-size

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

使用C++ hex和cin

如果您有以下代码:

cout << hex << 10;
Run Code Online (Sandbox Code Playgroud)

输出为'a',表示十进制10转换为十六进制值.

但是,在下面的代码中......

int n;
cin >> hex >> n;
cout << n << endl;
Run Code Online (Sandbox Code Playgroud)

当输入为12时,输出变为18.任何人都可以解释转换的细节吗?它是如何成为小数值的?

我对它成为一个int的兴趣感兴趣.如果分解,那将是:

(( cin >> hex ) >> n);
Run Code Online (Sandbox Code Playgroud)

它是否正确?

c++ hex decimal

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

在int的情况下交换失败并且在字符串的情况下工作

#include <iostream>
#include <string>
#include <algorithm>    
int main()
{
 std::string str1 = "good", str2 = "luck";
 swap(str1,str2); /*Line A*/
 int x = 5, y= 3;
 swap(x,y); /*Line B*/
}
Run Code Online (Sandbox Code Playgroud)

如果我评论B行代码编译(http://www.ideone.com/hbHwf),而注释行A代码无法编译(http://www.ideone.com/odHka),我收到以下错误:

error: ‘swap’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)

为什么我在第一种情况下没有收到任何错误?

c++ swap

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

错误C2784:无法推断模板参数

还在与模板战斗.在这个例子中,尽管直接从书中复制的事实我收到以下错误消息:Error 2 error C2784: 'IsClassT<T>::One IsClassT<T>::test(int C::* )' : could not deduce template argument for 'int C::* ' from 'int'.

这是一本书模板 - 完整指南中的一个例子.(我使用Visual Studio 2010 RC).

  template<typename T> 
    class IsClassT { 
      private: 
        typedef char One; 
        typedef struct { char a[2]; } Two; 
        template<typename C> static One test(int C::*); 
        template<typename C> static Two test(…); 
      public: 
        enum { Yes = sizeof(IsClassT<T>::test<T>(0)) == 1 }; 
        enum { No = !Yes }; 
    }; 

class MyClass { 
}; 

struct MyStruct { 
}; …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

在指针变量中存储除零之外的整数常量

int main()
{

int *d=0;
printf("%d\n",*d);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

这很好用.

>cc legal.c
> ./a.out
0
Run Code Online (Sandbox Code Playgroud)

如果我更改语句int *d=0;,int *d=1; 我会看到错误.

cc: "legal.c", line 6: error 1522: Cannot initialize a pointer with an integer constant other than zero.
Run Code Online (Sandbox Code Playgroud)

很明显,它只允许零.我想知道当我们这样做时,内存中发生了什么,这int *d=0使得它成为有效的语法.

我只是出于好奇而问这个!

c c++

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

错误:构造函数是私有的

小问题:

这是班级:

class Author 
{

    Author(const std::string& name, const std::string& email, Gender gender);
    Author& setName(const std::string& name);

private:
    std::string a_name;
    std::string a_email;
    int a_gender;
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,他写下一个错误:

错误:'Author :: Author(const string&,const string&,Gender)'是私有的|

但它是拙劣的构造者,所以什么是他的女贞,所以他不能得到呐喊?

坦克!

c++

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

标签 统计

c++ ×9

templates ×2

arrays ×1

boost ×1

c ×1

code-size ×1

compare ×1

decimal ×1

g++ ×1

hex ×1

lame ×1

match ×1

mp3 ×1

perl ×1

swap ×1