社区
Qt
帖子详情
QVector问题
lizheng092
2010-05-25 08:57:49
有如下定义:
QVector<QVector<double> > *test = new QVector<QVector<double> >;
如何对test中的元素进行操作?比如test中含有5*5个元素,如何获取其中(3,3)位置的元素,并对其进行操作?
...全文
956
17
打赏
收藏
QVector问题
有如下定义: QVector<QVector > *test = new QVector<QVector >; 如何对test中的元素进行操作?比如test中含有5*5个元素,如何获取其中(3,3)位置的元素,并对其进行操作?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
superlemonym
2012-04-21
打赏
举报
回复
请问QVector<QVector<QPoint> >这个怎么用?我想用这个数组画出多条折线,点击左键,画连续的的折线,点击右键,再重新开始画另一条线,该怎么办?求高手指教啊。。
donwmufromdying
2010-05-27
打赏
举报
回复
顺便再问一个:在函数里,怎样返回一个局部变量的指针或引用?
我在一个函数里有一个QVector<QVector <double> * > test,想返回test里面的数据,这个怎么做方便?直接返回时,由于函数返回时,这个指针就编程悬垂指针了,不能得到正确结果。
一般,函数中的局部变量的指针或者引用是不能作为返回类型的,因为出了函数生命周期结束了.关于你的问题是这样的:
QVector<QVector <double> * > foo()
{
QVector<QVector <double> * > test;
test.append(new QVector <double>());
return test;
}
这样没问题.
就是要记得在外边delete掉new出来的东西
比如:
QVector<QVector <double> * > gettor = foo();
qDeleteAll(gettor);
donwmufromdying
2010-05-26
打赏
举报
回复
话说回来,何必用new来使用vector呢?
donwmufromdying
2010-05-26
打赏
举报
回复
(*test)[i][j]
lizheng092
2010-05-26
打赏
举报
回复
比如:t1->at(i).at(j) = 1.0;
data = t1->value(i)[j];
data *= 2.5; // 能实现乘法操作
data1 = t1->value(i)[j];
t1->value(i)[j] *= 2.5;
// 不能实现乘法操作,为什么???
data1 = t1->value(i)[j];
data2 = t1->value(i)[j];
t1->value(i)[j] = t1->value(i)[j] *2.5; // 不能实现乘法操作,操作完之后数值不变。
data2 = t1->value(i)[j]; //
data3 = t1->value(i)[j];
t1->value(i)[j] += 1.0;
// 不能实现加法操作,为什么???
data3 = t1->value(i)[j];
data4 = t1->at(i).at(j); // at().at()只能当右值
data5 = t1->value(i).value(j); // value().value()应该可以当左值的啊,但t1->value(i).value(j) *= 2.5编译报错,显示*= 左操作数必须为左值
麻烦大家帮我看看这是为什么?我想对t1->at(i).at(j)位置的数进行一些比如乘一个数,加一个数之类的操作。
lizheng092
2010-05-26
打赏
举报
回复
[Quote=引用 3 楼 dext 的回复:]
不能用
test[i][j] 吗?
[/Quote]
test是指针,这样用报错。
zhangweiit
2010-05-26
打赏
举报
回复
QVector<QVector <double> * > *fun(QVector<QVector <double> * > *test);
//这里返回的指针,也是指向test的,放在返回值里只是为了使用简便,类似于strcpy
一般指针函数返回的指针,其实都是在调用函数前就已经创建的
zhangweiit
2010-05-26
打赏
举报
回复
[Quote=引用 13 楼 lizheng092 的回复:]
顺便再问一个:在函数里,怎样返回一个局部变量的指针或引用?
我在一个函数里有一个QVector<QVector <double> * > test,想返回test里面的数据,这个怎么做方便?直接返回时,由于函数返回时,这个指针就编程悬垂指针了,不能得到正确结果。
[/Quote]
如果要避免野指针问题的话,最好把这个test作为传入参数
void fun(QVector<QVector <double> * > *test);
lizheng092
2010-05-26
打赏
举报
回复
顺便再问一个:在函数里,怎样返回一个局部变量的指针或引用?
我在一个函数里有一个QVector<QVector <double> * > test,想返回test里面的数据,这个怎么做方便?直接返回时,由于函数返回时,这个指针就编程悬垂指针了,不能得到正确结果。
lizheng092
2010-05-26
打赏
举报
回复
[Quote=引用 6 楼 foxyz 的回复:]
(*test)[i][j]
[/Quote]
这个可以,多谢。小弟C++基础不好,以后多多指教!
pcenshao
2010-05-26
打赏
举报
回复
*test[i][j]
zhangweiit
2010-05-26
打赏
举报
回复
<template T>
T *vpos(QVector<QVector<T>> *v,size_t i,size_t j)
zhangweiit
2010-05-26
打赏
举报
回复
除非楼主专门写个函数
<template T>
T *vpos(QVector<QVector<T>>,size_t i,size_t j)
zhangweiit
2010-05-26
打赏
举报
回复
test->value(i)[j]
个人觉得,这样已经比较简单了,毕竟这是一个二维数组,而且又是指针,
dext
2010-05-26
打赏
举报
回复
不能用
test[i][j] 吗?
lizheng092
2010-05-25
打赏
举报
回复
[Quote=引用 1 楼 killua_hzl 的回复:]
C/C++ code
test->at(3).at(3)
[/Quote]
自己试了一下,test->at(i).at(j)为只读;
test->value(i)[j]则可作为左值。感觉这样操作起来挺麻烦的,有没有更简单一点的方法?
核动力蜗牛Killua
2010-05-25
打赏
举报
回复
test->at(3).at(3)
使用QList还是
QVect
or的
问题
本文探讨了Qt中QList与
QVect
or的使用场景及性能差异。QList适合频繁的数据更新操作,而
QVect
or适用于大量数据读取。此外,提到了Qt6中两者已合并为
QVect
or。
Qt基础之四十一:记一次
QVect
or的bad alloc
问题
追踪
本文详细探讨了
QVect
or的特点,包括其动态数组的底层实现、内存分配策略,以及如何处理'bad alloc'
问题
。
QVect
or在内存不足、内存碎片或非法参数时可能导致内存分配失败。在满容量后,
QVect
or内存按2的n次方增长,但实际容量还需考虑QArrayData的数据成员占用。当添加元素超出2GB限制时,会出现内存分配失败的异常。
QT中使用
QVect
or存储QImage类型图像数据遍历时不显示
问题
在QT编程中,遇到使用
QVect
or存储QImage类型图像数据时,由于QImage的隐式共享特性,导致图像显示错误。
问题
在于QImage仅进行了浅拷贝,而非深拷贝。解决方法是在添加图像到
QVect
or之前,通过调用detach()方法进行深拷贝。同时,需要注册
QVect
or
类型以确保正确传递。经过修正,成功实现了显示五张不同图像的目标。
ASSERT: "isDetached()"报错——多线程抢占
QVect
or类型变量引起的
问题
本文解决了一个Qt程序在多线程环境下使用
QVect
or时遇到的崩溃
问题
,详细分析了
问题
根源在于资源抢占,并提供了解决方案,即通过QMutex实现线程同步。
QVect
or数据清理和内存清理
本文介绍了
QVect
or在处理大数据时的数据清理和内存释放
问题
。
QVect
or的clear()方法可能无法立即释放内存,而shrink_to_fit()能够确保内存减少。此外,还提供了一种高效清空
QVect
or的方法——使用swap()函数,通过与空
QVect
or对象交换内容来快速清空,这种方法避免了逐个删除元素的时间开销。示例代码展示了如何使用swap()清空
QVect
or对象。
Qt
21,498
社区成员
26,692
社区内容
发帖
与我相关
我的任务
Qt
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
复制链接
扫一扫
分享
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章