clist,list怎么读
MFC CList
CListint,int list;
POSITION ps=list.GetHeadPosition();
list.InsertAfter(ps,1);
list.InsertAfter(ps,2);
list.InsertAfter(ps,3);
ps=list.GetHeadPosition();
for(;ps!=NULL;list.GetNext(ps))
printf("%d\n",list.GetAt(ps));
//这样就遍历了吧~~

C++ 中STL list编译问题
#include iostream
#include list
//#pragma warning(disable: 4786)
using namespace std;
typedef listchar C_LIST;
void listTravel(C_LIST list)
{
C_LIST::iterator itr;
for(itr = list.begin(); itr != list.end(); itr++)
{
cout *itr ends;
}
cout endl;
}
int listPopFront(C_LIST list,char *ch) //C_LIST是一个list容器,如果你加C_LIST * 那就是一个容器数组,你可以用C_LIST*list 但是要用list[0].front()访问
{
*ch = list.front();
list.pop_front();
return list.size();
}
int main()
{
C_LIST clist;
char ch;
clist.push_back('A');
clist.push_back('B');
clist.push_back('C');
listTravel(clist);
listPopFront(clist,ch);
listTravel(clist);
}
clistctrl与clistview有什么不同?
CListView 和 CListCtrl 控件的区别:
clistview里面嵌的是clistctrl,clistctrl是mfc对windows的common control(名字叫listview32...)的封装。
控件不支持文档/视,拖动等特性,clistview比clistctrl多了这些特性。
奶牛过街(crossings)求C++代码
#include?stdio.h
int?clist[100000][2];//能够保存100000牛的a_i和b_i
void?main()
{
int?n,num,i,j;
scanf("%d",n);//输入奶牛数量
for(i=0;in;i++)
{
scanf("%d%d",clist[i][0],clist[i][1]);//保存n行a_i和b_i,?clist[i][0]对应a_i,clist[i][1]对应b_i
}
num=0;//初始化可以通过的奶牛数量
for(i=0;in;i++)
{
for(j=0;jn;j++)
{
if(i==j)?continue;
if((clist[i][0]=clist[j][0]clist[i][1]=clist[j][1])||(clist[i][0]=clist[j][0]clist[i][1]=clist[j][1]))
{
break;//路线交叉退出for
}
}
if(j==n)?num++;
}
printf("%d",num);
}
MFC类中,CList删除元素的同时,会不会delete掉对应占有的内存?如果不会,要怎么删除?
CList删除元素时, 会删除元素对应的内存. 但不删除CList对象的内存. 这个对象一般由类自动管理, 而不需要你去删除它.
因为使用DDL时, 使用的是类成员变量.
而在C++中, 类成员变量的内存的生命周期在类的释放时释放.
请教CListView的具体用法,有实例代码最好
CListView用在文档视图结构中。用APPWIZARD 生成一个单文档的程序,有一个向导页,选中VIEW 从CListView派生。
1 。设定样式
void CIHISSERVERView::OnInitialUpdate()
{
CListView::OnInitialUpdate();
CListCtrl m_list = GetListCtrl();
m_list.SetBkColor(RGB(242,251,255));
m_list.SetTextColor( RGB(12,26,234) );
m_list.InsertColumn(0 , "报警顺序号", LVCFMT_LEFT, 80, 0 );
m_list.InsertColumn(1 , "住宅编号", LVCFMT_LEFT, 80, 1 );
m_list.InsertColumn(2 , "所有者姓名", LVCFMT_LEFT, 80, 2 );
m_list.InsertColumn(3 , "手机号码", LVCFMT_LEFT, 100, 3 );
m_list.InsertColumn(4 , "住宅电话", LVCFMT_LEFT, 80, 4 );
m_list.InsertColumn(5 , "办公室电话", LVCFMT_LEFT, 80, 5 );
m_list.InsertColumn(6 , "使用者姓名", LVCFMT_LEFT, 80, 6 );
m_list.InsertColumn(7 , "手机号码", LVCFMT_LEFT, 100, 7 );
m_list.InsertColumn(8 , "住宅电话", LVCFMT_LEFT, 80, 8 );
m_list.InsertColumn(9 , "办公室电话", LVCFMT_LEFT, 80, 9);
m_list.InsertColumn(10, "主控器编号", LVCFMT_LEFT, 80, 10);
m_list.InsertColumn(11, "工作模式", LVCFMT_LEFT, 80, 11);
m_list.InsertColumn(12, "报警逻辑", LVCFMT_LEFT, 80, 12);
m_list.InsertColumn(13, "端口类型", LVCFMT_LEFT, 60, 13);
m_list.InsertColumn(14, "报警端口号", LVCFMT_LEFT, 80, 14);
m_list.InsertColumn(15, "报警路径", LVCFMT_LEFT, 140, 15);
m_list.InsertColumn(16, "报警时间", LVCFMT_LEFT, 160, 16);
m_list.ModifyStyle( LVS_TYPEMASK,LVS_REPORT | LVS_SINGLESEL );
m_list.SetExtendedStyle( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE );
}
2。鼠标右键单击ListView事件
// 鼠标右键单击事件,谈出控制菜单
void CIHISSERVERView::OnRclick(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CListCtrl m_list = GetListCtrl();
int nItemIndex = -1;
if ( ( m_list.GetNextItem(-1, LVNI_SELECTED))!=-1)
{
while ( ( nItemIndex = m_list.GetNextItem ( nItemIndex, LVNI_SELECTED ) ) != -1 )
{
CMenu menu;
menu.LoadMenu(IDR_MENU2);
CPoint point ;
::GetCursorPos(point);
::SetForegroundWindow(m_hWnd);
menu.GetSubMenu(0)-TrackPopupMenu(TPM_LEFTALIGN ,
point.x,
point.y,
this,
NULL);
}
}
*pResult = 0;
}
3。在其他的类中向ListView插入数据
UINT CProcessAlarm:: dealwith( vector UCHAR arr )
{
SumInBreakPath.Empty();
SumInBreakPaths.Empty();
CMainFrame *m_mainframe = (CMainFrame*)AfxGetMainWnd();
CIHISSERVERView *pview = (CIHISSERVERView*)m_mainframe - GetActiveView();
CListCtrl m_list =pview - GetListCtrl();
。。。
m_list.SetTextColor(RGB(0,0,189));
m_list.SetTextBkColor(RGB(150,252,255));
m_list.InsertItem( ListCtrlIndex, AlarmNO );
m_list.SetItemText(ListCtrlIndex,1, (char*)HouseID );
if (OwnerName == "" )
m_list.SetItemText(ListCtrlIndex,2, "没有记录" );
else
m_list.SetItemText(ListCtrlIndex,2, OwnerName );
if ( OwnerMobilePhone == "" )
m_list.SetItemText(ListCtrlIndex,3, "没有记录" );
else
m_list.SetItemText(ListCtrlIndex,3, OwnerMobilePhone);
if (OwnerHomePhone == "")
m_list.SetItemText(ListCtrlIndex,4, "没有记录");
else
m_list.SetItemText(ListCtrlIndex,4, OwnerHomePhone);
if ( OwnerOfficePhone == "" )
m_list.SetItemText(ListCtrlIndex,5, "没有记录");
else
m_list.SetItemText(ListCtrlIndex,5, OwnerOfficePhone);
if ( ResidentName == "" )
m_list.SetItemText(ListCtrlIndex,6, "没有记录");
else
m_list.SetItemText(ListCtrlIndex,6, ResidentName );
if ( ResidentMobilePhone == "" )
m_list.SetItemText(ListCtrlIndex,7, "没有记录");
else
m_list.SetItemText(ListCtrlIndex,7, ResidentMobilePhone);
if ( ResidentHomePhone == "" )
m_list.SetItemText(ListCtrlIndex,8, "没有记录");
else
m_list.SetItemText(ListCtrlIndex,8, ResidentHomePhone);
if ( ResidentOfficePhone == "")
m_list.SetItemText(ListCtrlIndex,9, "没有记录");
else
m_list.SetItemText(ListCtrlIndex,9, ResidentOfficePhone);
m_list.SetItemText(ListCtrlIndex,10, ControllerID);
m_list.SetItemText(ListCtrlIndex,11, WorkModeName);
m_list.SetItemText(ListCtrlIndex,12, SumLogicName);
m_list.SetItemText(ListCtrlIndex,13, PortType);
m_list.SetItemText(ListCtrlIndex,14, AlarmPortNum);
m_list.SetItemText(ListCtrlIndex,15, inBreakPath);
m_list.SetItemText(ListCtrlIndex,16, Time);
// 使焦点始终在最后一行
int nCount = m_list.GetItemCount();
if (nCount 0)
{
m_list.EnsureVisible(nCount-1, FALSE);
m_list.SetItemState(nCount-1, LVIS_SELECTED, LVIS_SELECTED);
if ( nCount-1 0 )
{
m_list.SetItemState(nCount-1-1, 0, LVIS_SELECTED);
}
}
m_list.SetFocus();
。。。。
}