⑴ 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」)