本文整理汇总了C++中queue::back方法的典型用法代码示例。如果您正苦于以下问题:C++ queue::back方法的具体用法?C++ queue::back怎么用?C++ queue::back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类queue
的用法示例。
在下文中一共展示了queue::back方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: move
/** Moves the snake.
@param direction - 'U' = Up, 'L' = Left, 'R' = Right, 'D' = Down
@return The game's score after the move. Return -1 if game over.
Game over when snake crosses the screen boundary or bites its body. */
int move(string direction) {
pair<int, int> head = snake.back();
int x = head.first, y = head.second;
if(direction == "U") x--;
else if(direction == "D") x++;
else if(direction == "L") y--;
else if(direction == "R") y++;
if(isDead(x,y)){
return -1;
}
else{
if(!isFood(x,y)){
// if not food, advance
table[snake.front().first][snake.front().second] = false;
snake.pop();
}
snake.push(make_pair(x,y));
table[x][y] = true;
}
return score;
}
示例2: push
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<map>
using namespace std;
class Stack {
public:
// Push element x onto stack.
queue<int> q;
void push(int x) {
q.push(x);
}
// Removes the element on top of the stack.
void pop() {
q.back()
}
// Get the top element.
int top() {
}
// Return whether the stack is empty.
bool empty() {
}
};
int main(){
return 0;
}
示例3: historyCommand
//This function executes a command from the history queue
void historyCommand(char* toks[]){
int size = history.size();
string argument = toks[1];
Command node;
char **temp;
//execute the most recent command
if (argument.compare("!") == 0) {
if (history.size() != 0) { //if there is history
node = history.back();
string comp = (node.getParts())[0]; //string used for comparison
if(comp.compare("!") != 0) { //if previous command is not "!!" or "!X"
temp = node.getParts();
//pass the command
if(commandIsInternal(temp[0])){
executeInternalCommand(temp);
} else {
executeExternalCommand(temp);
}
}
else { //previous command is !!
cout << "Error: The previous command is \"!!\" or \"!X\"" << endl;
}
}
else { //there is no history
cout << "Error: There are no commands in history." << endl;
}
}
else {
//execute the Nth command
//get the X from !X
string convert = toks[1];
int n = atoi(convert.c_str());
//test if the history queue is even as long as the int
if (n < history.size()+1) {
//loop through queue by popping and pushing and grab Nth command
int size = history.size();
int ii;
for(ii = 0; ii < size; ii++){
Command xx = history.front();
history.pop();
history.push(xx);
if (n == (size-ii)) {
node = xx;
}
} //end for loop
temp = node.getParts();
string comp = temp[0];
if (comp.compare("!") == 0) {
cout << "The command you are asking for is \"!!\" or \"!X\"." << endl;
}
else{
//pass the command
if(commandIsInternal(temp[0])){
executeInternalCommand(temp);
}
else {
executeExternalCommand(temp);
}
}
}
else {
//Command does not exist
cout << "No such command in history" << endl;
}
} //end else
} //end historyCommand()
示例4: top
// Get the top element.
int top() {
return rse.back();
}
示例5: top
/** Get the top element. */
int top() {
return que.back();
}
示例6: top
// Get the top element.
int top() {
return in.back();
}
示例7: main
int main(){
que_sym.push({1,"me"});
printf("%d:%s\n", que_sym.back().id_num, que_sym.back().name);
return 0;
}
示例8:
void
Audicle_Shell_UI::get_output( string& out ) { out = _outputs.back() ;
_outputs.pop(); }
示例9: top
T top()
{
if (q1.empty()) throw runtime_error("bad operation");
return q1.back();
}
示例10: top
// Get the top element.
int top() {
return stack.back();
}
示例11: main
int main(int argc, char* argv[])
{
// Start
VideoCapture capture (CV_CAP_OPENNI);
if(!capture.isOpened())
{
int error = -1;
return 1;
}
namedWindow( "Color Image", 1 );
//namedWindow( "Depth Map", 1);
Mat view;
bool blink = false;
// NITE + openni
XnStatus rc = XN_STATUS_OK;
Context context;
rc = context.Init();
rc = g_GestureGenerator.Create(context);
rc = g_HandsGenerator.Create(context);
XnCallbackHandle hcb1,hcb2;
g_GestureGenerator.RegisterGestureCallbacks(Gesture_Recognized, Gesture_Process, NULL, hcb1);
g_HandsGenerator.RegisterHandCallbacks(handCreate, handUpdate, handDestroy, NULL, hcb2);
rc = context.StartGeneratingAll();
rc = g_GestureGenerator.AddGesture(GESTURE_TO_USE, NULL);
double d = 1.0;
double angle = 0.0;
double angleZ = 0.0;
Mat result;
Mat orig = imread("crocus.jpg");
result.create(750, 750, CV_8UC3);
double centerX = orig.cols/2;
double centerY = orig.rows/2;
warpPerspective(orig, orig, getScaleMatrix(1.0), orig.size(), INTER_CUBIC, BORDER_TRANSPARENT);
while( capture.isOpened() )
{
rc = context.WaitAndUpdateAll();
d = getZoom();
angle = getAngle();
angleZ = getAngle3D();
if (abs(d - oldZoom) > 0.009) {
//printf("angle = %f \n",angle);
oldAngle += angle;
//create the transformation to be passed to warp
Mat openCVTransform = getRotationMatrix2D(Point2f(centerX, centerY), oldAngle, d);
//warp image to apply transformation
result.setTo(Scalar(0));
warpAffine(orig, result, openCVTransform, result.size(), INTER_CUBIC, BORDER_TRANSPARENT);
oldZoom = d;
}
imshow("Result", result);
Mat bgrImage;
capture.grab();
capture.retrieve( bgrImage, CV_CAP_OPENNI_BGR_IMAGE );
if (hand1ID != -1) {
circle(bgrImage,Point(hand1.back().X + bgrImage.rows/2, bgrImage.cols/2 - hand1.back().Y),2,CV_RGB(0,255,0),3);
}
if (hand2ID != -1) {
circle(bgrImage,Point(hand2.back().X + bgrImage.rows/2, bgrImage.cols/2 - hand2.back().Y),2,CV_RGB(0,255,0),3);
}
flip(bgrImage,bgrImage,1);
imshow("Color Image", bgrImage);
result.create(750, 750, CV_8UC3);
if(waitKey(33) == 'q')
{
break;
}
}
context.Shutdown();
return 0;
}
示例12: top
// Get the top element.
int top() {
return q.back();
}
示例13: top
// Get the top element.
int top() {
return my_que_A.back();
}
示例14: main
int main() {
int length;
int x[8];
int value;
// 预先存储康托展开需要的阶层,7!, 6!, 5!, 4!, 3!, 2!, 1!
int fact[] = { 5040, 720, 120, 24, 6, 2, 1};
int cantor;
while (cin >> length && length != -1) {
bool isMatch = false;
RubicsCube new_rc;
RubicsCube first_rc;
memset(isFound, false, sizeof(isFound));
while (!que_rubicsCube.empty()) {
que_rubicsCube.pop();
}
first_rc.value = 12348765;
first_rc.step = "";
que_rubicsCube.push(first_rc);
for (int i = 0; i < 8; i++) {
cin >> x[i];
}
Array2Int(x, value);
if (value == 12348765) { // 若目标和初始状态一样,则直接得出结果
isMatch = true;
}
while (!isMatch) {
RubicsCube rc = que_rubicsCube.front(); // 取队列头部数据
if (rc.step.length() == length) { // 若不满足在规定步数内达到目标状态,则退出循环
break;
}
// A operation
CubeOperation(rc, new_rc, 'A'); // 进行A操作
cantor = GetCantor(new_rc.value, fact); // 获得康托展开对应数值
if (isFound[cantor] == false) { // 若没有访问过,则存入队列尾部,并令isFound为true
isFound[cantor] = true;
que_rubicsCube.push(new_rc);
if (IsMatch(value, new_rc) == true) { // 若匹配到目标状态,则isMatch = true,退出循环
isMatch = true;
break;
}
}
// B operation
CubeOperation(rc, new_rc, 'B');
cantor = GetCantor(new_rc.value, fact);
if (isFound[cantor] == false) {
isFound[cantor] = true;
que_rubicsCube.push(new_rc);
if (IsMatch(value, new_rc) == true) {
isMatch = true;
break;
}
}
// C operation
CubeOperation(rc, new_rc, 'C');
cantor = GetCantor(new_rc.value, fact);
if (isFound[cantor] == false) {
isFound[cantor] = true;
que_rubicsCube.push(new_rc);
if (IsMatch(value, new_rc) == true) {
isMatch = true;
break;
}
}
que_rubicsCube.pop();
}
if (isMatch == true) { // 匹配到则输出结果
RubicsCube rc = que_rubicsCube.back();
cout << rc.step.length() << " ";
cout << rc.step << endl;
}
else { // 无法在规定步数内得到目标状态
cout << "-1" << endl;
}
}
return 0;
}