当前位置:首页 » 服务存储 » 自定义类存储到容器中
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

自定义类存储到容器中

发布时间: 2022-08-06 10:59:01

⑴ set容器存储的自定义类型有多个变量

大部分人说,很简单,因为对于关联容器来说,不需要做内存拷贝和内存移动。说对了,确实如此。set容器内所有元素都是以节点的方式来存储,其节点结构和链表差不多,指向父节点和子节点。结构图可能如下:

A
/ \
B C
/ \ / \
D E F G

因此插入的时候只需要稍做变换,把节点的指针指向新的节点就可以了。删除的时候类似,稍做变换后把指向删除节点的指针指向其他节点也OK了。这里的一切操作就是指针换来换去,和内存移动没有关系。

⑵ Qt怎样在一个类中将数据存到容器在另一个类中使用

可以用友元,不用也行

#include<QCoreApplication>
#include<iostream>
usingnamespacestd;
classB;
classA{
public:
A(){
m_List.append(1);
m_List.append(2);
}
friendclassB;
private:
QList<int>m_List;
};

classB{
public:
B(){}
voidfun(constA&a){
cout<<a.m_List.at(0)<<endl;
cout<<a.m_List.at(1)<<endl;
}
};

intmain(intargc,char*argv[])
{
QCoreApplicationa(argc,argv);
Aaa=A();
Bb;
b.fun(aa);
returna.exec();
}

运行结果

⑶ C++向set容器中存储自己写的类

试试看这样行不行
#include<iostream>//include提前
#include<set>
using namespace std;
class CPoint
{
private:
int xPos;
int yPos;
public:
CPoint(int x = 0,int y = 0);
int returnx();

int returny();
};CPoint::CPoint(int x, int y)
{
xPos = x;
yPos = y;
}
int CPoint::returnx()
{
return xPos;
}
int CPoint::returny()
{
return yPos;
}void TestSet()
{
CPoint pi(5,5);
CPoint pi1(6,6);//添加vs的定义set<CPoint> vs;set<CPoint> vs1;//不太明白这两句话vs.insert(st); vs1.insert(pi);,是不是想写成vs.insert(pi);vs1.insert(pi1);是的话替换//掉就可以了,我先换了 vs.insert(pi);vs1.insert(pi1);
}void main()
{
TestSet();
}

⑷ c++容器中存放自己定义的类,用unique和sort函数怎样实现通过按照类成员对vector进行去重和排序

sort接受的是参数是指针或迭代器,sort(a[0],a[n]);你这里只是2个元素。

可以自写比较函数,也可以用标准定义好的函数对象:

#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;

bool sort_desc(int a, int b)
{
return a > b;
}
bool sort_asc(int a, int b)
{
return a < b;
}

void p(int* begin, int* end)
{
while(begin < end)
cout << *begin++ << ' ';
cout << endl;
}

int main()
{
int a[] = {6,9,1,3,5,2,7,0,4,8};

sort(a, a + 10, sort_desc);
p(a, a + 10);
sort(a, a + 10, sort_asc);
p(a, a + 10);

sort(a, a + 10, greater<int>());
p(a, a + 10);
sort(a, a + 10, less<int>());
p(a, a + 10);
}

⑸ 如何把一个vector 和一个map<int,vector <int>>赋值到一个容器内

容器用来存储数据的,数据可以是用户自定义类型(对象),也可以是预定义类型,c++中的容器主要使用如vector,list (顺序容器) 这些都是已经封装好了的,包含头文件"vector","list",通过迭代器iterator访问容器中的数据,map,set(关联容器),关联容器map键值对形式出现key-value,key唯一,mutimap多映射可以不唯一;set是一个单一值的集合,如1,2,3,4 顺序容器:vector,list 分别举例 对比 vector容器的特点:在内存中是一片连续的存储区域,初始化的时候,可以指定容量,比如如果定义容量50 的容器存储 60个string对象,由于初始容量不足60,容器将会重新定义一个容量是原来的2倍新容器,然后拷贝原容器的对象到新容器. 读取速度快,插入删除效率低.如果仅仅在容器头或尾部 进行增删改,推荐使用deque,专门提供了对首尾的操作. list容器特点:相当数据结构的链表,不是一个连续的存储区域,插入,删除很方便,但是查询速度慢 vector<string> vec 就是定义了一个vector容器,可以通过 vec.push_back(), push_font(),insert(position,value) 想vector中添加一个指定值 list<int> ilist<初始大小,默认赋值> list<int> ilist(20 -1) 初始20个值为-1的list 然后操作可以参考这些这些类封转的方法。 关联容器:set map mutimap mutiset key-->value形式 1--1 2--2 3--3 set 形式 1234,键值唯一; 具体容器的操作方法,可以调用其成员函数.

⑹ 自定义容器(Custom Classes)是什么

嘿..这段话我见过,出至一个章节大概叫作Binary Serialize Dataset vs Custom Classes..
它说的很清楚Custom Classes--自定义容器,在我的概念里,应该叫做Custom Entity Classes--业务实体对象

这个在J2EE和NET都是常用的概念,关于实体对象的好处和使用,书上都能用一个章节来将,这里我就不罗嗦了,写一个简单的实体类容器你看看:
/// <summary>
/// 设计联络单扩展实体
/// </summary>
public class DesignConnect
{
private String projectName;

/// <summary>
/// 项目名称
/// </summary>
public String ProjectName
{
get
{
return projectName;
}
set
{
projectName = value;
}
}
}
类DesignConnect里实现了属性ProjectName字段的GET和SET,就实现了它的容器功能.
总之,Custom Classes只是一个概念的叫法,是很多东西的统称,我只是讲了一种,在实际使用中没有什么大不了的~~~

祝你好运``

⑺ 怎么把自己创建的对象加到spring容器中。让spring管理

既然对象已经new出来了再让spring直接管理是不行的. 不过你可以用设计模式-代理模式,使代理类让Spring管理效果可以是一样的.

⑻ 如何在Spring容器中加载自定义的配置文件

配置文件名为:project.properties,内容如下:

# 是否开启逻辑删除
del.filter.on=false
domain=http://www.366go.cn/

修改Spring配置文件
之前代码:

<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:dbinfo.properties</value>
</list>
</property>
</bean>

修改后的配置文件

<bean id="propertyConfigurer"
class="com.hisun.core.util.">
<property name="locations">
<list>
<value>classpath:dbinfo.properties</value>
<value>classpath:project.properties</value>
</list>
</property>
</bean>

加入了classpath:project.properties,其为自定义的配置文件
将PropertyPlaceholderConfigurer类修改为自定义类,
PropertyPlaceholderConfigurer类的具体作用可以查资料这块儿不做详细介绍
定义类
类的具体内容为下,

import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

public class extends PropertyPlaceholderConfigurer {
private static Map ctxPropertiesMap;

@Override
protected void processProperties( beanFactoryToProcess,
Properties props) throws BeansException {
super.processProperties(beanFactoryToProcess, props);
ctxPropertiesMap = new HashMap();
for (Object key : props.keySet()) {
String keyStr = key.toString();
String value = props.getProperty(keyStr);
ctxPropertiesMap.put(keyStr, value);
}
}
public static Object getContextProperty(String name) {
return ctxPropertiesMap.get(name);
}
}

定义获取配置文件中值的类SpringPropertiesUtil
类的具体内容如下:

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
* Spring-PropertiesUtil工具类 -获取属性值
*
*/
@Component
public class SpringPropertiesUtil implements ApplicationContextAware {
public static final String KEY = "propertyConfigurer";
private static ApplicationContext applicationContext;

public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
SpringPropertiesUtil.applicationContext = applicationContext;
}

public static ApplicationContext getApplicationContext() {
return applicationContext;
}

/**
* 获取配置文件中的内容
*
* @param keyName
* @return
*/
public static String parseStr(String keyName) {
cp = () applicationContext
.getBean(KEY);
return cp.getContextProperty(keyName).toString();
}

/**
* 获取配置文件中的内容
*
* @param keyName
* @return
*/
public static int parseInt(String keyName) {
cp = () applicationContext
.getBean(KEY);
return Integer.parseInt(cp.getContextProperty(keyName).toString());
}

/**
* 获取配置文件中的内容
*
* @param keyName
* @return
*/
public static double parseDouble(String keyName) {
cp = () applicationContext
.getBean(KEY);
return Double.parseDouble(cp.getContextProperty(keyName).toString());
}
}

这样,在项目当中就能够方便快速的获取properties文件中配置的参数
如SpringPropertiesUtil.parseStr(“content”)