導航:首頁 > 編程知識 > 編程peek屬於哪個類

編程peek屬於哪個類

發布時間:2024-07-08 10:59:16

A. 編寫程序設計一個類CStudent

|#include<iostream>
#include<fstream>
using namespace std;
class CStudent{
public:
int id,age;
char name[20];
char sex;
float score[3];
void operator <<(CStudent s){
cout<<s.id<<"-"<<s.name<<"-"<<s.sex;
cout<<"-"<<s.age<<"-"<<s.score[0]<<"-"<<s.score[1]<<"-"<<s.score[2]<<endl;
}
void input(char filename[]){
cout<<"請輸入學生信息(id-name-sex-age-score[])"<<endl;
CStudent s;
cin>>s.id>>s.name>>s.sex>>s.age>>s.score[0]>>s.score[1]>>s.score[2];
ofstream outfile(filename,ios::out||ios::binary);
if(!outfile){
cout<<"open error!"<<endl;
exit(0);
}
outfile.write((char *)&s,sizeof(CStudent));
outfile.close();
cout<<endl;
}
void SearchById(char filename[],int sid){
cout<<"學號為"<<sid<<"的學生信息為:";

ifstream infile(filename,ios::in||ios::binary);
if(!infile){
cout<<"open error!"<<endl;
exit(0);
}
while(infile.peek()){
CStudent s;
infile.read((char *)&s,sizeof(CStudent));
if(s.id==sid){
*this<<s;
// cout<<s.id<<"-"<<s.name<<"-"<<s.sex<<"-"
// <<s.age<<"-"<<s.score[0]<<" "<<s.score[1]<<" "<<s.score[2];
break;
}
}
infile.close();
cout<<endl;
}

void SearchByName(char filename[],char sname[]){
cout<<"姓名為"<<sname<<"的學生信息為:";

fstream infile(filename,ios::in||ios::binary);
if(!infile){
cout<<"open error!"<<endl;
exit(0);
}
while(infile.peek()){
CStudent s;
infile.read((char *)&s,sizeof(CStudent));

if(!strcmp(s.name,sname)){
*this<<s;
// cout<<s.id<<"-"<<s.name<<"-"<<s.sex<<"-"
// <<s.age<<"-"<<s.score[0]<<" "<<s.score[1]<<" "<<s.score[2];
break;
}
}
infile.close();
cout<<endl;
}

void CalcById(char filename[],int sid){
CStudent s;
float total,average;
fstream infile(filename,ios::in||ios::binary);
if(!infile){
cout<<"open error!"<<endl;
exit(0);
}
while(infile.peek()){
infile.read((char *)&s,sizeof(CStudent));
if(s.id==sid){
total=s.score[0]+s.score[1]+s.score[2];
average=total/3;
//*this<<s;
cout<<"學號:"<<sid<<" 總成績:"<<total<<" 平均成績:"<<average<<endl;
break;
}
}
infile.close();
cout<<endl;
}

void List(char filename[]){ CStudent s;
float n,total;
char ssex;
cout<<"請輸入要查詢的最低成績和性別"<<endl;
cin>>n>>ssex;
fstream infile(filename,ios::in||ios::binary);
if(!infile){
cout<<"open error!"<<endl;
exit(0);
}

while(infile.peek()){
s.score[0]=0;
s.score[1]=0;
s.score[2]=0;
infile.read((char *)&s,sizeof(CStudent));
total=s.score[0]+s.score[1]+s.score[2];
if(total>n && s.sex==ssex)
// *this<<s;
cout<<s.id<<"-"<<s.name<<"-"<<s.sex<<"-"<<s.age<<"-"<<s.score[0]<<" "<<s.score[1]<<" "<<s.score[2]<<endl;
}
infile.close();
cout<<endl;
}

};

int main(){
CStudent s0;
int n;
char filename[]="student.txt";
char sname[]="zhangsan";
char name[20]="zhangsan";
cout<<"strcmp"<<!strcmp(name,sname)<<endl;
cout<<"請輸入學生人數"<<endl;
cin>>n;
for(int i=0;i<n;i++)
s0.input(filename);
s0.SearchById(filename,3);

s0.CalcById(filename,3);

s0.SearchByName(filename,sname);
s0.List(filename);
return 0;
}

B. 使用抓包軟體分析抓包,怎樣看廣播幀哪些是廣播幀我有wireshark和omnipeek軟體。

廣播是一台主機向網路中所有主機發送數據包,廣播的目的地址不同於單播單一的地址。
廣播有兩類:定向廣播和有限廣播
1、定向廣播是將數據包發送到向本網路之外的特定網路所有主機,定向廣播的目的地址是定向網路的廣播地址,如當前網路為192.168.0.0/24,要向192.168.1.0/24的網路發送定向廣播,那麼定向廣播的目的地址是:192.168.1.255。可以配置路由器讓其轉發定向廣播。
2、有限廣播是將數據包發送到本地網路的所有主機,有限廣播使用的目的地址是:255.255.255.255.路由器不轉發此廣播。

所以看看是不是最後是255的就可以了

C. java編程實現堆棧出棧操作!

數組實現的堆棧:ArrayStack.java
public class ArrayStack {
Object[] m_elements;
int m_size;

public ArrayStack(int len) {
m_elements = new Object[len];
m_size = 0;
}

public ArrayStack() {
this(50);
}

// insert onto stack
public void push(Object element) {
m_elements[m_size] = element;
m_size++;
}

// return and remove the top element
public Object pop() {
if (!this.isEmpty()) {
Object obj = m_elements[m_size - 1];
m_elements[m_size - 1] = null;
m_size--;

return obj;
} else {
return null;
}
}

// return the top element
public Object top() {
if (!this.isEmpty()) {
return m_elements[m_size - 1];
} else {
return null;
}
}

// return 1 --> is empty
// return 0 --> is not empty
public boolean isEmpty() {
return this.size() == 0;
}

public int size() {
return m_size;
}
}

使用鏈表實現(單鏈表) :
public class Stacklist {
Node m_header;

int m_size;

public ListStack() {
m_header = null;
m_size = 0;
}

public void push(Object value) {

m_header = new Node(value, m_header);

}

public Object pop() {
if (!this.isEmpty()) {
throw new RuntimeException("Stack underflow");
}

Object obj = m_header.element;

m_header = m_header.next;

return obj;
}

// return reference to most recently added elemenet
public Object peek() {
if (!this.isEmpty()) {
throw new RuntimeException("Stack underflow");
}

return m_header.element;
}

public boolean isEmpty() {
return this.size() == 0;
}

//return the number of the queue's elements;
public int size() {
return m_size;
}
}

鏈表的需要用到一個結點類 Node.java 代碼如下
public class Node {
Object element;
Node next;

public Node(Object theElement) {
this(theElement, null);
}

public Node(Object theElement, Node n) {
element = theElement;
next = n;
}

public Object getElement() {
return element;
}

public void setElement(Object element) {
this.element = element;
}

public Node getNext() {
return next;
}

public void setNext(Node next) {
this.next = next;
}
}

D. Android開發,如何編程實現開啟電話的免提功能

viewplain
voidcallPhone(){
Intentintent=newIntent(Intent.ACTION_CALL,Uri.parse("tel:110"));//不能調用呼叫
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
viewplain
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
<uses-permissionandroid:name="android.permission.CALL_PHONE"/>
<uses-permissionandroid:name="android.permission.PROCESS_OUTGOING_CALLS"/>
<uses-permissionandroid:name="android.permission.CALL_PRIVILEGED"/>
viewplain
voidcallPhone(Stringnum){
Intentintent=newIntent("android.intent.action.CALL_PRIVILEGED",Uri.parse("tel:"+num));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}


viewplain
{
booleancomingPhone=false;

@Override
publicvoidonCallStateChanged(intstate,StringincomingNumber){
switch(state){
caseTelephonyManager.CALL_STATE_IDLE:/*無任何狀態*/
Log.d(tag,"phoneidle");
if(this.comingPhone){
this.comingPhone=false;
backMyApp();
setSpeekModle(false);
}
break;
caseTelephonyManager.CALL_STATE_OFFHOOK:/*接起電話*/
Log.d(tag,"phoneanswer");
this.comingPhone=true;
setSpeekModle(true);
break;
caseTelephonyManager.CALL_STATE_RINGING:/*電話進來*/
Log.d(tag,"phonecoming");
this.comingPhone=true;
setSpeekModle(true);
break;
}
}
}
viewplain
TelephonyManagertelManager=(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
TelListnerlistener=newTelListner();
telManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
viewplain
voidsetSpeekModle(booleanopen){
//audioManager.setMode(AudioManager.ROUTE_SPEAKER);
currVolume=audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL);
audioManager.setMode(AudioManager.MODE_IN_CALL);

if(!audioManager.isSpeakerphoneOn()&&true==open){
audioManager.setSpeakerphoneOn(true);
audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,
audioManager.getStreamMaxVolume(AudioManager.STREAM_VOICE_CALL),
AudioManager.STREAM_VOICE_CALL);
}elseif(audioManager.isSpeakerphoneOn()&&false==open){
audioManager.setSpeakerphoneOn(false);
audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL,currVolume,
AudioManager.STREAM_VOICE_CALL);
}
}
viewplain
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE"/>
<uses-permissionandroid:name="android.permission.MODIFY_AUDIO_SETTINGS"/>

E. java編程中,常提到的反射代碼指的是什麼

JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法專;對於任意一屬個對象,都能夠調用它的任意一個方法;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。

所謂的反射代碼,也就是實現java反射機制的代碼。

F. vscode中vue文件下<style></style>樣式不能注釋怎麼搞

語法使用錯了。

css內應該使用如下的注釋:

<style>

.container {

width: 100%;

/* background-color: red; */

/*

height: 100%;

font-size: 2rem;

*/

}

</style>


<!--注釋-->這是HTML的注釋,如:

<div>

<!--<div>內容</div>-->

</div>

G. 如何看待go語言泛型的最新設計

Go 由於不支持泛型而臭名昭著,但最近,泛型已接近成為現實。Go 團隊實施了一個看起來比較穩定的設計草案,並且正以源到源翻譯器原型的形式獲得關注。本文講述的是泛型的最新設計,以及如何自己嘗試泛型。

例子

FIFO Stack

假設你要創建一個先進先出堆棧。沒有泛型,你可能會這樣實現:

type Stack []interface{}func (s Stack) Peek() interface{} {

 

return s[len(s)-1]

}

func (s *Stack) Pop() {

 *s = (*s)[:

len(*s)-1]

}

func (s *Stack) Push(value interface{}) {

 *s = 

append(*s, value)

}

但是,這里存在一個問題:每當你 Peek 項時,都必須使用類型斷言將其從 interface{} 轉換為你需要的類型。如果你的堆棧是 *MyObject 的堆棧,則意味著很多 s.Peek().(*MyObject)這樣的代碼。這不僅讓人眼花繚亂,而且還可能引發錯誤。比如忘記 * 怎麼辦?或者如果您輸入錯誤的類型怎麼辦?s.Push(MyObject{})` 可以順利編譯,而且你可能不會發現到自己的錯誤,直到它影響到你的整個服務為止。

通常,使用 interface{} 是相對危險的。使用更多受限制的類型總是更安全,因為可以在編譯時而不是運行時發現問題。

泛型通過允許類型具有類型參數來解決此問題:

type Stack(type T) []Tfunc (s Stack(T)) Peek() T {

 

return s[len(s)-1]

}

func (s *Stack(T)) Pop() {

 *s = (*s)[:

len(*s)-1]

}

func (s *Stack(T)) Push(value T) {

 *s = 

append(*s, value)

}

這會向 Stack 添加一個類型參數,從而完全不需要 interface{}。現在,當你使用 Peek() 時,返回的值已經是原始類型,並且沒有機會返回錯誤的值類型。這種方式更安全,更容易使用。(譯註:就是看起來更醜陋,^-^)

此外,泛型代碼通常更易於編譯器優化,從而獲得更好的性能(以二進制大小為代價)。如果我們對上面的非泛型代碼和泛型代碼進行基準測試,我們可以看到區別:

type MyObject struct {

    X 

int

}

var sink MyObjectfunc BenchmarkGo1(b *testing.B) {

 

for i := 0; i < b.N; i++ {

  

var s Stack

  s.Push(MyObject{})

  s.Push(MyObject{})

  s.Pop()

  sink = s.Peek().(MyObject)

 }

}

func BenchmarkGo2(b *testing.B) {

 

for i := 0; i < b.N; i++ {

  

var s Stack(MyObject)

  s.Push(MyObject{})

  s.Push(MyObject{})

  s.Pop()

  sink = s.Peek()

 }

}

結果:

BenchmarkGo1BenchmarkGo1-16     12837528         87.0 ns/op       48 B/op        2 allocs/opBenchmarkGo2BenchmarkGo2-16     28406479         41.9 ns/op       24 B/op        2 allocs/op

在這種情況下,我們分配更少的內存,同時泛型的速度是非泛型的兩倍。

合約(Contracts)

上面的堆棧示例適用於任何類型。但是,在許多情況下,你需要編寫僅適用於具有某些特徵的類型的代碼。例如,你可能希望堆棧要求類型實現 String() 函數

閱讀全文

與編程peek屬於哪個類相關的資料

熱點內容
android連接網路列印機 瀏覽:195
linuxsftp如何上傳文件 瀏覽:603
蘋果文件覆蓋 瀏覽:327
網路足彩名人有哪些 瀏覽:639
pc共享網路給電腦 瀏覽:796
linuxkill重啟進程 瀏覽:658
sketchup景觀教程 瀏覽:730
win10管理找不到模塊 瀏覽:472
蘋果手機查看電腦文件 瀏覽:61
微信不訪問視頻文件夾嗎 瀏覽:259
文件夾加密大師注冊碼 瀏覽:1
onedrive怎麼上傳文件 瀏覽:488
android多線程寫文件棧溢出 瀏覽:242
台電酷閃量產工具 瀏覽:837
如何破壞文件 瀏覽:15
從什麼網站上查找國家標准 瀏覽:254
iphone5s最省電的瀏覽器 瀏覽:225
用數據線如何接攝像頭 瀏覽:110
qq手機電腦互傳文件 瀏覽:613
linux內核升級方法 瀏覽:986

友情鏈接