我在makefile教程中找到了以下几行,但是我对粗线有些问题.
在一行,如果我写
program_C_SRCS:=$(*.c)
Run Code Online (Sandbox Code Playgroud)
这是行不通的.所以请告诉我在这里做什么是通配符.这个词是否仅限于makefile?
在教程中写道,第二行将执行测试替换.谁能告诉我一些关于这个文本替换的事情?
如果我的问题非常基础,请原谅我,因为我是新手制作文件.
CC:=g++
program_NAME:=myprogram
**program_C_SRCS:=$(wildcard *.c)** # 1 line
program_CXX_SRCS:=$(wildcard *.cc)
**program_C_OBJ:=$(program_C_SRCS:.c=.o)** # 2 line
program_CXX_OBJ:=$(program_CXX_SRCS:.c=.o)
program_OBJ:= $(program_C_OBJ) $(program_CXX_OBJ)
Run Code Online (Sandbox Code Playgroud) 我正在阅读C++ FAQ.在那里我发现操作符重载使用指南中有一点:
如果您提供构造性运算符,则它们应该允许提升左侧操作数(至少在类具有未使用explicit关键字标记的单参数ctor的情况下).例如,如果您的类Fraction支持从int到Fraction的提升(通过非显式ctor Fraction :: Fraction(int)),并且如果允许x-y用于两个Fraction对象,则还应允许42-y.在实践中,这仅仅意味着您的operator-()不应该是Fraction的成员函数.通常你会把它变成朋友,如果没有其他原因而不是强迫它进入公众:类的一部分,但即使它不是朋友,它也不应该是成员.
为什么作者写了operator-()不应该是成员函数?
如果我将operator-()作为成员函数以及其他后果会有什么不良后果?
我正在开发一个 android 应用程序,它将允许用户创建民意调查。用户可以创建问题并提供一组选项。
我想提供一个功能,用户可以在其中动态添加或删除选项。
我无法决定哪种布局最好。
TableLayout - 每行可以包含一个选项。与 RecyclerView - 每个项目都可以是一个选项。
(请注意,每个选项实际上都是一个 EditText 视图,用户必须在其中输入选项内容。)
我见过人们通常将 RecyclerView 用于非常大的数据集,但对于我的用例,用户最多可以添加 5 或 6 个选项。除此之外,我将使用回收器视图来收集数据。对于这样的用例,使用 RecyclerView 或其他东西是一个不错的选择吗?
请提供建议
这是一个面试问题.我想过像multiway-hashing这样的解决方案,却找不到优雅的东西.请提出一些好的方法.
问题:您有1000万个IP地址.(IPv4 4字节地址).为这些IP地址创建哈希函数.
提示:使用IP本身作为关键是一个坏主意,因为会浪费很多空间
当我在终端中启动后台进程时,如果终端如何关闭,那么我们就不能再与该进程交互了.我不确定,但我认为这个过程也会被杀死.任何人都可以告诉我如何从终端分离该过程.所以,即使我关闭终端,那么我可以在新终端中与相同的进程进行交互?
我是unix的新手,所以你的额外信息对我有帮助.
在下面的代码中我希望答案是"不相等",因为默认情况下3.5
应该是double
C++,但结果是"相等".
声明float a=3.5f
和float a=3.5
?有什么区别?
#include<iostream>
using namespace std;
int main()
{
float a=3.5;
if(a==3.5)
cout<<"equal"<<endl;
else
cout<<"Not equal"<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我试图将当前长度值作为默认参数作为函数参数传递.但编译器显示错误
"'这个'可能不会在这种情况下使用"
任何人都可以告诉我我犯的错误是什么.?
class A
{
private:
int length;
public:
A();
void display(int l=this->length)
{
cout<<"the length is "<<l<<endl;
}
};
int main()
{
A a;
a.display();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 在最后的节目中,我得到了这样的输出.
constructor is called
destructor is called
destructor is called
destructor is called
destructor is called
destructor is called
destructor is called
Run Code Online (Sandbox Code Playgroud)
我能够弄清楚,如果因为五次调用析构函数而调用最后五行析构函数.但我无法理解前两行.为什么构造函数只被调用一次,然后在下一行调用析构函数.
请解释一下.谢谢
class A {
public :
string name;
int age;
A(){ cout << "constructor is called" << endl; }
~A() { cout << "destructor is called"<< endl; }
};
int main()
{
vector<class A> vec(5);
cout << vec.size() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我尝试使用排序算法来排序向量的元素.这是我的代码片段.
比较
struct comparator
{
bool operator() ( OptVector<pair<int, pair<CgpPop*,CgpPop*> > >::iterator it1, OptVector<pair<int, pair<CgpPop*,CgpPop*> > >::iterator it2)
{
return ( ((*it1).first) < ((*it2).first));
}
} o_comparator;
Run Code Online (Sandbox Code Playgroud)
我的向量 - 这里的OptVector是一个包装器,它的行为方式与标准的c ++向量相同.
OptVector< pair<int, pair<CgpPop*,CgpPop*> > > pll_units;
Run Code Online (Sandbox Code Playgroud)
打电话给algo
sort<OptVector< pair<int, pair<CgpPop*,CgpPop*> > >::iterator > (pll_units.begin(), pll_units.end(), o_comparator);
Run Code Online (Sandbox Code Playgroud)
但是编译器会抛出以下错误
/calm/svr/sql/generic/stlinclude/stl/_algo.c: In function ‘const _Tp& _STL::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [with _Tp = _STL::pair<int, _STL::pair<CgpPop*, CgpPop*> >, _Compare = comparator]’:
/calm/svr/sql/generic/stlinclude/stl/_algo.c:820: instantiated from ‘void _STL::__introsort_loop(_RandomAccessIter, _RandomAccessIter, _Tp*, _Size, _Compare) [with …
Run Code Online (Sandbox Code Playgroud) 可能重复:
gcc编译错误:cast指定数组类型
我想检查(int*)和(int [])的区别.当我编译以下代码时,第一行就可以了.但对于第2行,我的编译器给出以下错误:
test.c:10: error: cast specifies array type
Run Code Online (Sandbox Code Playgroud)
请问任何人请告诉我这个错误的含义以及我在哪里错了?
#include<stdio.h>
void abc(int *a)
{
int i;
for(i=0;i<2;i++)
{
printf("%d",((int * )a)[i]); //(1)
printf("%d",((int [])a)[i]); //(2)
}
}
int main()
{
int b[2]={0,1};
abc(b);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 假设我想从字符串中删除重复项.我决定使用长度为256的布尔数组来存储特定字符是否已经出现.我可以遍历字符串,并可以借助此辅助布尔数组删除所有重复项.
我的问题是"这个算法是否就位?"
我认为它使用的是恒定的空间量,它不会随着它应该就地输入的大小而改变.如果我错了,请纠正.