遍历vector printf示例代码
时间: 2023-07-29 09:12:02 浏览: 285
如果你想遍历一个 `std::vector` 并使用 `printf` 函数打印其元素,你需要使用索引来访问每个元素。下面是一个示例代码:
```cpp
#include <iostream>
#include <vector>
#include <cstdio>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
for (size_t i = 0; i < numbers.size(); i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,我们定义了一个 `std::vector`,其中包含整数元素。然后,我们使用 `for` 循环遍历向量的每个元素。在循环体内部,我们使用 `printf` 函数打印当前元素的值。请注意, `%d` 是用于打印整数的格式化说明符。循环结束后,我们打印一个换行符以换行。
请确保在使用 `printf` 函数时包含 `<cstdio>` 头文件。另外,注意使用索引 `i` 来访问向量的每个元素,并使用 `%d` 格式化说明符打印整数值。如果要遍历包含其他类型的向量,可以相应调整格式化说明符。
相关问题
遍历窗口句柄获取窗口大小
可以使用Windows API中的`EnumWindows`和`GetWindowRect`函数来遍历窗口句柄并获取窗口大小。
首先,定义一个回调函数作为参数传递给`EnumWindows`函数。这个回调函数会被枚举到的每一个窗口都调用一次。在这个函数中,我们可以使用`GetWindowRect`函数获取窗口的位置和大小信息。
下面是一个示例代码:
```c++
#include <windows.h>
#include <vector>
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
std::vector<RECT>* windowRects = reinterpret_cast<std::vector<RECT>*>(lParam);
RECT rect;
if (GetWindowRect(hwnd, &rect))
{
windowRects->push_back(rect);
}
return TRUE;
}
int main()
{
std::vector<RECT> windowRects;
if (EnumWindows(EnumWindowsProc, reinterpret_cast<LPARAM>(&windowRects)))
{
for (const auto& rect : windowRects)
{
printf("Window: (%d, %d) - (%d, %d)\n", rect.left, rect.top, rect.right, rect.bottom);
}
}
return 0;
}
```
这个示例代码会遍历所有窗口句柄,并将每个窗口的位置和大小信息存储在一个`RECT`结构体中,最终输出到控制台。
1、运行时从键盘输入先序序列,创建对应二叉树,再分别对其进行前、中、后序遍历,输出每个遍历序列。分别使用c语言和c++代码
为了演示如何在C语言和C++中完成这个任务,我会给出基本的算法和代码示例。首先,我们需要一个函数来将先序遍历序列转换为二叉树:
```c
#include <stdio.h>
// C语言中二叉树节点的定义
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 函数用于构建二叉树
TreeNode* buildTree(int* preorder, int n) {
if (n == 0) return NULL;
TreeNode* root = &preorder[0];
TreeNode* left = buildTree(&preorder[1], n / 2);
TreeNode* right = buildTree(&preorder[n / 2 + 1], n - n / 2 - 1);
root->left = left;
root->right = right;
return root;
}
// C++版本的构建二叉树函数
class TreeNode {
public:
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* buildTreeCPP(vector<int>& preorder) {
// ... 类似C语言版本,只是更倾向于模板和智能指针
}
```
接下来,我们分别实现前、中、后序遍历并输出结果:
```c
// C语言版本的遍历函数
void printPreOrder(TreeNode* root) {
if (root != NULL) {
printf("%d ", root->val); // 先序遍历
printPreOrder(root->left);
printPreOrder(root->right);
}
}
// 中序遍历和后续遍历类似,只需调整递归顺序
void printInOrder(TreeNode* root) { ... }
void printPostOrder(TreeNode* root) { ... }
int main() {
int preorder[] = {1, 2, 3, 4, 5};
int n = sizeof(preorder) / sizeof(preorder[0]);
TreeNode* root = buildTree(preorder, n);
printf("先序遍历: ");
printPreOrder(root);
printf("\n");
// ... 同样为中序和后序遍历添加相应代码
return 0;
}
// C++版本的主函数
int main() {
vector<int> preorder = {1, 2, 3, 4, 5};
TreeNode* root = buildTreeCPP(preorder);
// ... 使用智能指针替换裸指针,并添加相应遍历函数
return 0;
}
```
以上代码仅为基本示例,实际编程时需要考虑错误处理和边界情况。在C++中,可以使用`std::vector`代替数组,并利用现代C++的特性优化代码。
阅读全文