它有什么功能boundingRect()
?
在码头中,描述了有必要重新定义两个功能:
void paint(*painter, const *option, QWidget *)
有了它,它或多或少是清晰的,
boundingRect()
返回一个矩形区域,这个区域会影响什么?如果返回面积 (0,0,0,0) 会发生什么???
它有什么功能boundingRect()
?
在码头中,描述了有必要重新定义两个功能:
void paint(*painter, const *option, QWidget *)
有了它,它或多或少是清晰的,
boundingRect()
返回一个矩形区域,这个区域会影响什么?如果返回面积 (0,0,0,0) 会发生什么???
实现了快速排序,但结果很笨拙,可能有很多东西是多余的而不是最优的。所以我在谷歌上搜索并找到了一个简单的实现,好吧,它非常简单!遇到了问题。大家知道,根据算法,你可以找到中间的元素(其中一个选项),然后通过相互交换将较小的元素放在它的左边,将大的元素放在右边,然后递归地重复一切。
实现本身如下(我没有包括 swap 函数,我认为它的实现是显而易见的):
#include <iostream>
int a[] = { 65,892,2,3,78,-5,41 };
const int SIZE = sizeof(a) / sizeof(*a);
void qsort(int* mas, int s, int e) {
if (s > e) return;
int mid = mas[(s+e)/2];
int L = s, R = e;
while (L<=R) {
while (mas[L] < mid) L++;
while (mas[R] > mid) R--;
if (L <= R) {
swap(mas, L, R);
L++;
R--;
}
}
qsort(mas, e, L);
qsort(mas, s, R);
}
int main() {qsort(a, 0, SIZE-1);}
但是从源码来看这个数组序列的有趣之处,我们显然要找到中间的元素(mid = 3),然后将元素分散到较小的左边和较大的右边,然后递归应该为这两半打电话。然而,算法搞砸了:在递归调用之前第一次调用 qsort 时,数组采用以下形式:{-5, 3, 2, 892, 78, 65, 41} 也就是说,在 mid=3 的右边是应该在左边的平分。是的,这可能会在下一次递归调用中解决。但这是否违反了算法?
我正在尝试设计一个模板类,它存储一个一元函数(指向它的指针)及其参数类型和输出参数类型。然后我尝试使用某个一元函数创建此类的对象(请参阅源代码)。一切似乎都很成功,但胃口却越来越大。我想修改(可能是一个类或其他东西),以便它不再需要模板参数。毕竟,假设功能std::ptr_fun
可以。
#include <iostream>
template <typename arg0, typename res0>
struct F1 {
typedef arg0 arg;
typedef res0 res;
typedef arg(*func)(res x);
func f;
F1(func _f) : f(_f) {}
res0 operator()(arg0 x) { return f(x); }
};
char foo(int u) { return 's'; }
template<typename arg0, typename res0>
F1<arg0, res0> F1_func(typename F1<arg0, res0>::func _func) {
return F1<arg0, res0>(_func);
}
int main() {
auto F1 = F1_func<char,int>(foo);
}
也就是说,我希望它能像这样工作:
int main() {
auto F1 = F1_func(foo);
}
实际上,您需要从 file_get_contents 获得响应
https://geocult.ru/lunnyiy-kalendar-2
并且有2个问题。
也就是说,粗略地说,在 file_get_contents 的帮助下,我执行以下操作:
$url = "https://geocult.ru/lunnyiy-kalendar-2?d1=10&m1=6&y1=1981&h1=20&mi=4&tz1=1&tz2=Europe%2FBerlin&lg=11.5754<=48.1374&cit=%D0%9C%D1%8E%D0%BD%D1%85%D0%B5%D0%BD&cn=DE&st=02&ci=2867714&sb=1"
$result = file_get_contents($url);
echo($result);
但参数 tz2=Europe%2FBerlin 和 cit=%D0%9C%D1%8E%D0%BD%D1%85%D0%B5%D0%BD 在https://geocult.ru/lunnyiy-kalendar中不理解-2
而如果你将它驱动到浏览器中,一切都会按我的需要显示: https ://geocult.ru/lunnyiy-kalendar-2?d1=10&m1=6&y1=1981&h1=20&mi=4&tz1=1&tz2=Europe%2FBerlin&lg=11.5754< =48.1374&cit=%D0%9C%D1%8E%D0%BD%D1%85%D0%B5%D0%BD&cn=DE&st=02&ci=2867714&sb=1
如何在开头具有相同公共代码的加号中胜任地组织2个不同的构造函数,其余代码是“自己的”
TextFrameBase(int size,int a , int b,int c) {
/*общий код*/
/*какой-то свой код для этого конструктора 1*/
}
TextFrameBase(int size) {
/*общий код*/
/*какой-то свой код для этого конструктора 2*/
}
有一个包含一些数字字段 h 和 w 的类,该类还包含组合。是否有可能在每个组合的方法中访问包含它们的类的字段 h 和 w?
class circle {
int radius;
int x;
int y;
public:
circle(int x, int y, int r,){
...
}
void draw () {
/*тут каким-то образом надо использовать h и w от "носителя композиции" */
}
}
class figura1 {
int h;
int w;
circle c1;
circle c2;
circle c3;
public:
figura1(int w, int h) {
this->w=w;this->h=h;
}
void drawfigura {
с1.draw();
с2.draw();
с3.draw();
}
}
由于我有很多像 fugura1 (fugura1,fugura2,fugura3...,fuguraN)这样的课程,这一事实更加严重。它们在不同数量的组合中有所不同 circle ,除了 circle 还有其他基元:矩形、三角形。他们还需要传递链接或指向组合“载体”的指针
需要绘制虚线段,以及不同长度的“点-划-点”类型的段。sfml 不知道如何绘制线段,更不用说虚线了。所以我用 sf::RectangleShape 和纹理绘制。我将预先在油漆中绘制的图像加载到纹理中。已知矩形的长度由第一个参数调节:setSize(sf::Vector2f(50, 5)); 这就是问题所在:我需要在更改此参数时图片不失真,如果图片不合适,我需要将图片愚蠢地剪掉,或者相反,如果另一张图片是沿着整个长度剪断,依此类推,最终被剪断或不剪断。并且图像被拉伸。你能给点建议吗?
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
RenderWindow window(VideoMode(1500, 1000), "SFML Works!");
sf::Texture sTest;
sTest.loadFromFile("pica/line1.png"); //картинку в паинте нарисовал во такую: - - - -
sf::RectangleShape line_with_thickness;
line_with_thickness.setTexture(&sTest);
line_with_thickness.setSize(sf::Vector2f(50, 5));
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
window.clear(Color::White);
window.draw(line_with_thickness);
window.display();
}
return 0;
}
见源。我创建了一个指向 CircleShape 的指针数组,我想在循环中为每个元素创建一个构造函数并对其进行初始化,但它没有退出。请帮帮我
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
RenderWindow window(VideoMode(200, 200), "SFMLworks");
CircleShape *shapeq[10];
for (size_t i = 0; i < 10; i++)
shapeq[i]->//!!!!!!!!вот тут хочу указать конструктор, а не выходит. !!!!
告诉我,我正在阅读有关 const_cast 的信息。编写的 const_cast 允许您删除 const 或 volatile 变量的状态。但它似乎并不完全是字面意思:因为我不能将它视为一个成熟的变量:
const int i = 0;
const_cast<int*>(&i);
i = 555;
但我可以这样做:
const int i = 0;
int* j = const_cast<int*>(&i);
*j = 555;
也就是说,如果声明了 const int i = 0; ,那么在 const_cast i 之后只能使用指针更改?
告诉一个在 21 世纪坐下来阅读 K&R 的人)))他们写道,在 Unix 中,文件夹是一个文件,您可以使用它执行 _open("dirname",...) ,然后使用 stat(fd ,...))。但是我有Win7(那里有文件夹吗?),我创建了文件夹,但是_open函数的结果是-1。具体尝试如下: fd = _open("dirname", _S_IREAD, 0); 函数参数没有找到在哪里阅读这些关于 Windows 的各种 _S_IREAD 等等(这种情况可能因操作系统而异?)。显然没有人在如此低的水平上工作,也没有人感兴趣。我想就以下问题寻求帮助:
ps 该文件夹确实存在于需要的地方。因为 _open 使用创建的纯文本文件
我的最后一个问题- tupanul 在问题的制定。混淆了荒谬。所以我正在重写。问题是一样的:在哪里?在堆栈上jjj->a
还是jjj->bbb
在堆上?
#include <stdlib.h>
#include <stdio.h>
typedef struct {
int a;
int b;
} myStruct;
myStruct* test() {
myStruct zzz;
zzz.a = 555;
zzz.b = 111;
myStruct* jjj = &zzz;
return jjj;
}
int main(int argc, char* argv[])
{
myStruct* zzz = test();
printf("%d %d", zzz->a, zzz->b);
return 0;
}
伙计们,不要严格踢。业余问题。如果我不使用malloc,而只是傻傻地用这种方式初始化jjj,那么jjj的a和b在哪里存储在堆上或堆栈上?
typedef struct {
int a;
int b;
} myStruct;
int main(int argc, char* argv[])
{
myStruct* jjj;
jjj->a = 777;
jjj->b = 111;
return 0;
}
int* test2() {
int a = 900;
return &a;
}
int main(int argc, char* argv[])
{
int* b = test2();
printf("%d", *b); //900
return 0;
}
但是函数末尾的局部变量会发生什么?在我的理解中,test2函数完成后,变量a应该被“遗忘”了,也就是这个地址的值应该被清理掉。而不是这里是地址,而是一个值。使用它是否正确?